前言
这一篇,开始实战。用到找偏移的第一个方法:内存搜索。目的是获得用户信息。
一、找偏移
1、分析
用户信息,属于获得数据。
全局数据搜索,局部数据拦截。
对于经常用到,又不怎么变动的数据,用全局变量会比较方便。
用户信息,基本不会变动,也很多地方会用到,猜测是用全局变量存储。
2、方法
对于全局变量,用CE进行内存搜索,看能不能找到。
3、验证
1、看下自己的登陆信息
2、用CE搜索用户名
搜索结果有绿色的,说明偏移是固定。
3、看下内存附近信息
也有省份这些信息,说明个人信息是存在一起的
4、结论
个人信息,确实是全局数据,可以直接搜索得到。
5、OD查看更多信息
用OD,可以更方便的查看更多的内存数据
在CE中搜到的内存地址是5D49498C,在OD中可以看到
1、dc 内存地址,能看到地址附加的文本
2、dd 内存地址,能看到地址附加的指针所指向的文本(文本较长的情况,会用到指针)
往下翻翻,能找到头像的指针和WXID的指针
6、计算偏移
偏移
内存地址已经知道,看下模块基址是什么?
在CE中可以看出,用户名的数据所在模块是WeChatWin.dll
OD可以看到WeChatWin.dll的基址是5BDE0000
Executable modules, 条目 8
基址=5BDE0000
大小=01946000 (26501120.)
入口=5CB34A63 WeChatWi.<ModuleEntryPoint>
名称=WeChatWi
文件版本=2.9.0.123
路径=C:\Program Files (x86)\Tencent\WeChat\WeChatWin.dll
对应的偏移就可以计算出来了
用户名 :
WXID指针 : 5D494D90 - 5BDE0000 = 16B4D90
其他信息同理,自行计算下
二、写代码
1、外部工具
1、新建MFC项目
2、编写代码
外部读取的函数是ReadProcessMemory
代码有详细备注,仔细阅读应该能看懂
2、内部工具
1、新建DLL项目
2、编写代码
3、用OD把DLL注入到目标软件
4、运行结果