这次跟着2019PC微信hook逆向分析课程学习下如何发送微信消息。
教程示例代码github地址:https://github.com/hedada-hc/pc_wechat_hook
本篇笔记学习教程:找微信个人数据基址
本篇笔记参考博客:PC微信逆向:使用CE+OD查找个人数据
博客大佬地址:请访问
CE修改器(Cheat Engine)是一款内存修改编辑工具,它允许你修改你的游戏,所以你将总是赢.它包括16进制编辑,反汇编程序,内存查找工具。与同类修改工具相比,它具有强大的反汇编功能,且自身附带了辅助工具制作工具,可以用它直接生成辅助工具。
OD,是一个反汇编工具,又叫OllyDebug,一个新的动态追踪工具。OllyDbg是一种具有可视化界面的32位汇编分析调试器,是一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring3级调试器,非常容易上手,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。
吾爱破解专用版Ollydbg.rar
,按照使用说明 .txt
来操作即可。Cheat Engine.exe
Jiangsu
。65F472DC
、WeChatWin.dll+13972DC
——这两个就是昵称地址。WeChatWin.dll
,双击【描述】,并修改描述为:WeChatWin.dll基址
;记录下WeChatWin.dll基址
的地址:66BB0000
。WeChatWin.dll基址
的地址:十六进制66BB0000
, 被称为dll模块基址
微信昵称找到了,那么微信号、手机号等也不远了。但在CE用同样的方法扫描数据,却无法获取,我这里只扫描到个人地址信息:
65F473C8
,WeChatWin.dll+13973C8
65F473E0
,WeChatWin.dll+13973E0
这时我们需要用到另一个工具:OD
OD基础操作的可以参考这个文章:OD 简介
大家也可以将鼠标放在字母快捷键
上查看说明:
-内存查看命令统一为d*格式: d[类型] [地址范围]
d代表Display,类型包括:字符、字符串、双字等。具体来说,d*命令共有这几种:d、 da、db、dc、dd、dD、df、dp、dq、du、dw、dW、dyb、dyd、ds、dS。
命令 | 格式 |
---|---|
基本类型 | |
dw | 双字节WORD格式 |
dd | 4字节DWORD格式 |
dq | 8字节格式 |
df | 4字节单精度浮点数格式 |
dD | 8字节双精度浮点数格式 |
dw | 指针大小格式,32位系统下4字节,64位系统下为8字节 |
dp | 指针大小格式,32位系统下4字节,64位系统下为8字节 |
基本字符串 | |
da | ASCII字符串格式 |
du | UNICODE字符串格式 |
db | 字节 + ASCII字符串 |
dW | 双字节WORD + ASCII字符串 |
dc | 4字节DWORD + ASCII字符串 |
高级字符串 | |
ds | ANSI_STRING类型字符串格式 |
dS | UNICODE_STRING类型字符串格式 |
吾爱破解[LCG].exe
WeChat.exe
,并点击【附加】。三角形的运行小按钮
,否则微信无法显示窗口。dc 昵称基址
,上下滚动来查看相关信息。dd 昵称基址
,并往下翻一翻,找到头像url。单击头像url,右击→【复制】→【到剪贴板】,并在浏览器中打开头像地址。复制其中一个就够了。我们在上一步复制的内容如下:65F475A4 0F590D18 ASCII "http://wx.qlogo.cn/mmhead/ver_1/BdevmwKtgCib16q8RKJLgJXnz8qla3nNg2T48yP1MexU2ibAJILSQSQAErXaNiaGKMnU"
;
http://wx.qlogo.cn/mmhead/ver_1/BdevmwKtgCib16q8RKJLgJXnz8qla3nNg2T48yP1MexU2ibAJILSQSQAErXaNiaGKMnU
,但没有出现绿色的基址;65F475A4
和0F590D18
;65F475A4
显示乱码;而0F590D18
是红色的,不是我们想要的绿色基址;刚才试一试的结果告诉我们:65F475A4
和0F590D18
都是地址。就是说,65F475A4
这个地址里,放的是另一个地址;而另一个地址0F590D18
里放的才是具体数据。这种地址里装了另一个地址的,就叫指针。如下表所示。
地址 | 数据 |
---|---|
65F473C8 | Jiangsu |
65F473E0 | Taizhou |
65F472DC | 你看花开啦 |
65F475A4 | 0F590D18 |
0F590D18 | http://wx.qlogo.cn/mmhead/ver_1/BdevmwKtgCib16q8RKJLgJXnz8qla3nNg2T48yP1MexU2ibAJILSQSQAErXaNiaGKMnU |
利用模块基址+偏移量的方式,可以获取到数据基址。 我们可以用微信头像的指针地址减去模块基址就能得到微信的头像偏移,即微信头像的指针地址 - WeChatWin.dll模块基址 = 偏移量
。
(原理待更新·····我现在还是有点不懂)
WeChatWin.dll基址
的地址:64BB0000
65F475A4 - 64BB0000
,得到 139 75A4,那么微信头像地址是:WeChatWin.dll+13975A4
。65F473E0 - 64BB0000 = 13973E0
,证明计算方法是正确的。将前面几个小节扫描到的和计算得到的地址都加到CE中,得到如下地址列表。
指针地址很明显,其数值里是另一个地址,而另一个地址里,装着我们要的数据。