序:
很多想学软件逆向分析的朋友们,初学者往往看到一大堆的技术资料,直接就懵了。本文以一个简单的例子,演示一下使用CE+OD进行内存的获取,然后使用Qt进行界面显示,让初学者简单了解逆向分析的流程,并且一步步自己进行手动实现,让初学者有一些成就感,避免直接上来就是技术文档打击到学习的热情。
一、准备工作:
CheatEngine 简称CE 用来定位数据;
Ollydbg 简称OD 用来动态调试;
微信版本:3.1.0.67
Qt:5.13.0用来开发界面(我喜欢用Qt做界面,习惯使用MFC的朋友们也可以使用MFC,核心部分不影响)
资源可能不太好找,这里放上我使用的逆向分析三件套:CE+OD+IDA
二、使用CE获取找偏移地址
1、登陆电脑微信,打开CE软件,点击电脑图标,选择进程,选中WeChat.exe,点Open按钮;
2、在微信找到自己的登陆信息:LaoWang
3、选择Value Type为String,将上一步中的用户名输入进去,然后点击First Scan按钮进行查找;
4、查看搜索结果有绿色的,说明用户名偏移是固定的,此处为10F235FC
5、查看该偏移地址附近的信息
6、该偏移地址附近的信息,有电话、地址信息、微信号等,说明个人信息是放在一起的;
二、使用OD查看更多内存信息
1、打开OD软件,File—>Attach,在弹出界面选择微信进程,然后点击Attach按钮;
2、我们在CE中搜索到的内存地址是:10F235FC,
(1)在OD界面我们使用dc 10F235FC命令,查找该内存地址附加的文本
(2)在OD界面我们使用dd 10F235FC命令,查找地址附加的指针所指向的文本(在文本较长的情况下,可能会使用指针)
可以看到wxid指针偏移地址是:10F23A18
四、计算偏移地址
1、计算偏移地址的方法:
偏移=内存地址-模块基址
2、在CE中查找模块:按下图步骤,可以看出内存地址所对应的模块为WeChatWin.dll;
3、在OD中查找模块基址:View—>Executable modules,找到WeChatWin.dll对应的基址为:0F680000
Base=0F680000
Size=01B40000 (28573696.)
Entry=10529FDC WeChatWi.<ModuleEntryPoint>
Name=WeChatWi
File version=3.1.0.67
Path=D:\Program Files (x86)\WeChat\WeChatWin.dll
4、计算偏移
通过上面我们已经知道:
模块基址:0F680000
那么偏移地址
用户名