PC微信hook学习笔记(一)—— 获取个人信息

PC微信hook学习笔记(一)—— 获取微信个人信息

  • 1 起步
  • 2. 获取基址
    • 2.1 用CE查看个人信息
      • 2.1.1 获取昵称基址
      • 2.1.2 dll模块基址
    • 2.2 用OD查看个人信息
      • 2.3 内存查看命令
      • 2.4 头像地址
  • 3 地址偏移
    • 3.1 用CE查看地址
    • 3.2 指针
    • 3.3 计算地址偏移量
        • 3.3.1 其他信息地址
    • 3.4 登录信息地址

这次跟着2019PC微信hook逆向分析课程学习下如何发送微信消息。
教程示例代码github地址:https://github.com/hedada-hc/pc_wechat_hook

本篇笔记学习教程:找微信个人数据基址
本篇笔记参考博客:PC微信逆向:使用CE+OD查找个人数据
博客大佬地址:请访问

1 起步

  • CE

CE修改器(Cheat Engine)是一款内存修改编辑工具,它允许你修改你的游戏,所以你将总是赢.它包括16进制编辑,反汇编程序,内存查找工具。与同类修改工具相比,它具有强大的反汇编功能,且自身附带了辅助工具制作工具,可以用它直接生成辅助工具。

  • OD

OD,是一个反汇编工具,又叫OllyDebug,一个新的动态追踪工具。OllyDbg是一种具有可视化界面的32位汇编分析调试器,是一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring3级调试器,非常容易上手,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。

  • 下载
    在吾爱破解的吾爱中下载OD(吾爱破解专用版Ollydbg.rar)
    在西西软件园下载Cheat Engine 7.0.0中文版 绿色汉化版
  • 安装
    (1)解压缩吾爱破解专用版Ollydbg.rar,按照使用说明 .txt来操作即可。
    (2)解压缩CE的zip文件

2. 获取基址

2.1 用CE查看个人信息

2.1.1 获取昵称基址

  1. 打开微信并登陆
    PC微信hook学习笔记(一)—— 获取个人信息_第1张图片
  2. 打开Cheat Engine.exe
    PC微信hook学习笔记(一)—— 获取个人信息_第2张图片
  3. 在CE中,点击【小电脑快捷图标】→【微信进程】,并在右侧扫描区输入登录的昵称并扫描数据。
    (1)用昵称扫描一次,最好找到绿色的地址。绿色的地址一般是基址,红色是动态地址。
    (2)找到后,双击绿色的地址,添加到下方的监控区域中。
    (3)这一步没有显示绿色地址的话,用登录账号的省份试试,如:Jiangsu
    PC微信hook学习笔记(一)—— 获取个人信息_第3张图片
    (4)右击添加好的地址条,选择【浏览相关内存区域】
    (5)在弹框【内存浏览器】下方的地址信息里,可以上下滚动,能查看到登录微信的地址、手机号等信息。
    PC微信hook学习笔记(一)—— 获取个人信息_第4张图片
  4. 双击监控区域的地址数据,并找个txt文本之类的记录绿色地址和弹框里的地址。如:65F472DCWeChatWin.dll+13972DC——这两个就是昵称地址
    PC微信hook学习笔记(一)—— 获取个人信息_第5张图片

2.1.2 dll模块基址

  1. 在CE中添加刚才复制的地址:WeChatWin.dll,双击【描述】,并修改描述为:WeChatWin.dll基址;记录下WeChatWin.dll基址的地址:66BB0000
    PC微信hook学习笔记(一)—— 获取个人信息_第6张图片
    PC微信hook学习笔记(一)—— 获取个人信息_第7张图片
    PC微信hook学习笔记(一)—— 获取个人信息_第8张图片
    WeChatWin.dll基址的地址:十六进制66BB0000, 被称为dll模块基址

微信昵称找到了,那么微信号、手机号等也不远了。但在CE用同样的方法扫描数据,却无法获取,我这里只扫描到个人地址信息:

  • Jiangsu:65F473C8WeChatWin.dll+13973C8
  • Taizhou:65F473E0WeChatWin.dll+13973E0

这时我们需要用到另一个工具:OD

2.2 用OD查看个人信息

OD基础操作的可以参考这个文章:OD 简介
大家也可以将鼠标放在字母快捷键上查看说明:
PC微信hook学习笔记(一)—— 获取个人信息_第9张图片

2.3 内存查看命令

-内存查看命令统一为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类型字符串格式

2.4 头像地址

  1. 先来查找头像地址,打开吾爱破解[LCG].exe
  2. 附加微信进程
    (1)【菜单】→【文件】→【附加】;
    (2)点击【附加弹框】的标题部分,并输入WeChat;选中WeChat.exe,并点击【附加】。
    PC微信hook学习笔记(一)—— 获取个人信息_第10张图片
    (4)附加完之后,一定要点击下三角形的运行小按钮,否则微信无法显示窗口
    PC微信hook学习笔记(一)—— 获取个人信息_第11张图片
    (5)在OD下方的命令输入框内输入:dc 昵称基址,上下滚动来查看相关信息。
    PC微信hook学习笔记(一)—— 获取个人信息_第12张图片
    (6)在OD下方的命令输入框内输入:dd 昵称基址,并往下翻一翻,找到头像url。单击头像url,右击→【复制】→【到剪贴板】,并在浏览器中打开头像地址。复制其中一个就够了。
    PC微信hook学习笔记(一)—— 获取个人信息_第13张图片

3 地址偏移

3.1 用CE查看地址

我们在上一步复制的内容如下:65F475A4 0F590D18 ASCII "http://wx.qlogo.cn/mmhead/ver_1/BdevmwKtgCib16q8RKJLgJXnz8qla3nNg2T48yP1MexU2ibAJILSQSQAErXaNiaGKMnU"

将头像url放到浏览器中查看,但现在看不了头像了。
PC微信hook学习笔记(一)—— 获取个人信息_第14张图片

  1. 首先,我们在CE里扫描头像url:http://wx.qlogo.cn/mmhead/ver_1/BdevmwKtgCib16q8RKJLgJXnz8qla3nNg2T48yP1MexU2ibAJILSQSQAErXaNiaGKMnU,但没有出现绿色的基址;
  2. 接着,点击【添加地址】,试一下刚才复制到的头像地址信息,如第一个:65F475A40F590D18
    结果,65F475A4显示乱码;而0F590D18是红色的,不是我们想要的绿色基址;
    PC微信hook学习笔记(一)—— 获取个人信息_第15张图片
    PC微信hook学习笔记(一)—— 获取个人信息_第16张图片

3.2 指针

刚才试一试的结果告诉我们:65F475A40F590D18都是地址。就是说,65F475A4这个地址里,放的是另一个地址;而另一个地址0F590D18里放的才是具体数据。这种地址里装了另一个地址的,就叫指针。如下表所示。

地址 数据
65F473C8 Jiangsu
65F473E0 Taizhou
65F472DC 你看花开啦
65F475A4 0F590D18
0F590D18 http://wx.qlogo.cn/mmhead/ver_1/BdevmwKtgCib16q8RKJLgJXnz8qla3nNg2T48yP1MexU2ibAJILSQSQAErXaNiaGKMnU

3.3 计算地址偏移量

利用模块基址+偏移量的方式,可以获取到数据基址。 我们可以用微信头像的指针地址减去模块基址就能得到微信的头像偏移,即微信头像的指针地址 - WeChatWin.dll模块基址 = 偏移量
(原理待更新·····我现在还是有点不懂)

  1. WeChatWin.dll基址的地址:64BB0000
  2. 打开【计算器】,选择【程序员】→【HEX】。
  3. 输入:65F475A4 - 64BB0000 ,得到 139 75A4,那么微信头像地址是:WeChatWin.dll+13975A4
    PC微信hook学习笔记(一)—— 获取个人信息_第17张图片
    此时,我们可以用CE扫描到的城市地址( Taizhou:65F473E0,WeChatWin.dll+13973E0)来验证下:65F473E0 - 64BB0000 = 13973E0,证明计算方法是正确的。

3.3.1 其他信息地址

  1. 获取微信号地址:65F47264-64BB0000 = 1397264
    PC微信hook学习笔记(一)—— 获取个人信息_第18张图片
  2. 获取手机号地址:65F47310 - 64BB0000 = 1397310

3.4 登录信息地址

将前面几个小节扫描到的和计算得到的地址都加到CE中,得到如下地址列表。
指针地址很明显,其数值里是另一个地址,而另一个地址里,装着我们要的数据。
PC微信hook学习笔记(一)—— 获取个人信息_第19张图片

你可能感兴趣的:(WeChatRobot)