彼岸浮灯篇,修改方兰生攻击力,WinHex修改0x878E和0x8796地址起连续四字节。貌似最大攻击力也就9999?
Archive for 5 月, 2011
古剑奇谭1.5.8修改方法
星期五, 27 5 月, 2011无忧隐藏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屯屯屯…”。