无忧隐藏V9.29免激活补丁

23 5 月, 2011

无忧隐藏是一款不错的软件,遗憾的是如果没激活的话,会在启动程序10多秒后弹出窗口,并且20分钟后退出程序。激活方法一是修改主页为指定网址,二是花钱买激活码。

花了一个晚上的时间研究并逆向了一下,制作了一个内存补丁供学习交流之用。HideWizardPatch

将压缩包中的两个文件解压到无忧隐藏的安装目录中,以后启动无忧隐藏使用HideWizardPatch.exe即可实现免激活。

额外操作:运行HideWizardPatch启动无忧隐藏后,请点击“激活”,然后去掉“同意设置浏览器主页”的复选框,再“确定”。为什么要这个额外操作,请见下一段落。

由于是短时间内完成的补丁,还有不完善的地方。一是360报警,内存补丁是使用ppatcher制作的,可以保证无毒无公害;二是无忧隐藏本身做了点恶意软件做的事,即除了修改主页外,其实还会修改浏览器的快捷方式,上面的额外操作就是为了让无忧隐藏恢复我们的快捷方式。

MFC ODBC与Access

21 5 月, 2011

今天帮人调试程序,遇到了MFC ODBC与Access数据库相关的问题,记录下。

之前从未真正使用过ODBC与Access数据库,下面是一点理解:ODBC和JDBC一样,是一层统一的封装,由各个数据库厂商提供统一的接口。你可以使用ODBC的统一接口,因为它具有通用性,稍加修改就能移植到不同数据库。当然,你也可以使用数据库厂商提供的单独的库。

与Access数据库连接,本质是与其数据库文件打交道,格式为.mdb。可以通过COM或者MFC本身的ODBC支持来实现连接。

COM实现连接:http://6520874.blog.163.com/blog/static/7258271920113845626128/

MFC项目向导中有对ODBC的支持,首先要在控制面板—>管理工具中配置数据源(ODBC)。

配置时有三种DSN(Data Source Name,数据源名称),需要根据具体情况及其提示进行配置,添加Microsoft Access Driver相关的数据库.mdb文件。

MFC项目向导会自动生成相关的CxxxSet类对ODBC进行支持。

在这里有趣的是,VC6.0的对话框编辑器中提供了相应的ActiveX控件ADODC和DATAGRID对ODBC进行了视图支持,但VS2005中确没有。具体的解决方案是:http://zhidao.baidu.com/question/210849183.html

在调试的过程中,因为项目的具体要求,还遇到了一点问题。该项目的主窗口即m_pMainWnd是含有以上两个控件的View,不是Dlg。现在需要先有登录对话框进行登录后才能出现主窗口。

在InitInstance中进行修改如下:
// The one and only window has been initialized, so show and update it.
//m_pMainWnd->ShowWindow(SW_SHOW);
//m_pMainWnd->UpdateWindow();
CLoginDlg dlg;
dlg.DoModal();
return TRUE;

然后在登录对话框的登录成功处有如下代码:
AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
AfxGetApp()->m_pMainWnd->UpdateWindow();
CDialog::OnOK();

结果发现主窗口依然出现,并且CLoginDlg的构造函数中AfxOleInit处出现断言错误。注释掉后,断言错误消失。

于是注释掉InitInstance中如下代码:
//// Parse command line for standard shell commands, DDE, file open
//CCommandLineInfo cmdInfo;
//ParseCommandLine(cmdInfo);

//// Dispatch commands specified on the command line
//if (!ProcessShellCommand(cmdInfo))
// return FALSE;

结果发现会在ShowWindow(SW_SHOW)处出现断言错误,具体出现在winocc.cpp ShowWindow中的ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));处。

经过调试发现m_pMainWnd为NULL。也就是说在ProcessShellCommand后m_pMainWnd才会有正确的赋值。参考:http://apps.hi.baidu.com/share/detail/15714628

最终解决方案:相关函数的调用延迟到CLoginDlg的登录处理函数中,如下:
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
AfxGetApp()->ParseCommandLine(cmdInfo);

// Dispatch commands specified on the command line
if (!AfxGetApp()->ProcessShellCommand(cmdInfo))
return ;

// The one and only window has been initialized, so show and update it.
AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
AfxGetApp()->m_pMainWnd->UpdateWindow();
CDialog::OnOK();

fopen系列函数引起的一个问题

7 5 月, 2011

今天凌晨无聊逛CSDN论坛的时候发现了这样一个帖子:

楼主使用fopen系列函数以“r+”的模式打开一个写有“abcdefg”字符串的文件,循环fgetc、printf,最后fclose,程序显示出“abcdefg”没有问题。但再次打开文件,先fputc(‘Z’, fp),然后循环fgetc、printf,最后fclose,这就出问题了。

问题表现为两个方面:一是printf出来的字符串不是预期的“bcdefg”,而是很多“屯”的字样;二是原文件也并不是预期的“Zbcdefg”,而是“Z屯屯屯…”。

Read the rest of this entry »

杀毒软件那些事

4 5 月, 2011

潮起潮落(一)——江民传奇

潮起潮落(二)——瑞星风云

潮起潮落(三)——金山觉醒

一个时代的印记(一)——DOS病毒

办公一族的困绕——宏病毒,互联网应用早期的病毒传播

蠕虫梦魇

PPS解析器

26 4 月, 2011

PPS缓存解析器(PPSCachePaser)是Y&D Studio开发的一款解析PPS缓存文件(ppsds.pgf),并可以从中提取已下载完毕的视频资源的小软件。

由Y&D Studio Higher于2011-04完成Ver1.0开发,采用Yarpee 2010-10 PPSCachePaser核心。

本地绿色下载:PPSCacheParser