Windows逆向分析入门(六)——实战篇(用户信息)

前言

这一篇,开始实战。用到找偏移的第一个方法:内存搜索。目的是获得用户信息。

一、找偏移

1、分析

用户信息,属于获得数据。

全局数据搜索,局部数据拦截。

对于经常用到,又不怎么变动的数据,用全局变量会比较方便。

用户信息,基本不会变动,也很多地方会用到,猜测是用全局变量存储。

2、方法

对于全局变量,用CE进行内存搜索,看能不能找到。

3、验证

1、看下自己的登陆信息

Windows逆向分析入门(六)——实战篇(用户信息)

2、用CE搜索用户名

搜索结果有绿色的,说明偏移是固定。

Windows逆向分析入门(六)——实战篇(用户信息)

3、看下内存附近信息

也有省份这些信息,说明个人信息是存在一起的

Windows逆向分析入门(六)——实战篇(用户信息)

Windows逆向分析入门(六)——实战篇(用户信息)

4、结论

个人信息,确实是全局数据,可以直接搜索得到。

5、OD查看更多信息

用OD,可以更方便的查看更多的内存数据

在CE中搜到的内存地址是5D49498C,在OD中可以看到

1、dc 内存地址,能看到地址附加的文本

Windows逆向分析入门(六)——实战篇(用户信息)

2、dd 内存地址,能看到地址附加的指针所指向的文本(文本较长的情况,会用到指针)

往下翻翻,能找到头像的指针和WXID的指针

Windows逆向分析入门(六)——实战篇(用户信息)Windows逆向分析入门(六)——实战篇(用户信息)

6、计算偏移

偏移 = 内存地址 - 模块基址

内存地址已经知道,看下模块基址是什么?

在CE中可以看出,用户名的数据所在模块是WeChatWin.dll

Windows逆向分析入门(六)——实战篇(用户信息)

OD可以看到WeChatWin.dll的基址是5BDE0000

Executable modules, 条目 8

基址=5BDE0000

大小=01946000 (26501120.)

入口=5CB34A63 WeChatWi.

名称=WeChatWi

文件版本=2.9.0.123

路径=C:\Program Files (x86)\Tencent\WeChat\WeChatWin.dll

Windows逆向分析入门(六)——实战篇(用户信息)

对应的偏移就可以计算出来了

用户名 : 5D49498C - 5BDE0000 = 16B498C

WXID指针 : 5D494D90 - 5BDE0000 = 16B4D90

其他信息同理,自行计算下

二、写代码

1、外部工具

1、新建MFC项目

Windows逆向分析入门(六)——实战篇(用户信息)

Windows逆向分析入门(六)——实战篇(用户信息)

2、编写代码

外部读取的函数是ReadProcessMemory

代码有详细备注,仔细阅读应该能看懂

Windows逆向分析入门(六)——实战篇(用户信息)

Windows逆向分析入门(六)——实战篇(用户信息)

2、内部工具

1、新建DLL项目

Windows逆向分析入门(六)——实战篇(用户信息)

2、编写代码

Windows逆向分析入门(六)——实战篇(用户信息)

Windows逆向分析入门(六)——实战篇(用户信息)

3、用OD把DLL注入到目标软件

Windows逆向分析入门(六)——实战篇(用户信息)

4、运行结果

Windows逆向分析入门(六)——实战篇(用户信息)

工具和教程,放群里(163419350),方便交流。
实战代码放在github:https://github.com/KongKong20/WeChatPCHook