吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13336|回复: 54
收起左侧

[调试逆向] 微信PC hook学习笔记(五) 定位发送消息的call

  [复制链接]
侃遍天下无二人 发表于 2021-6-26 14:47
本帖最后由 侃遍天下无二人 于 2021-6-26 19:47 编辑

调试过程

确定观察列表

首先,启动OD,并用OD打开微信。随后启动CE,并载入微信。
为了方便定位消息发送方,不妨先从文件传输助手下手,从手机app上我们得知文件传输助手的微信号(wxid)就是filehelper
在这里插入图片描述
在PC端选择文件传输助手,同时在CE中搜索,发现上百个结果:
在这里插入图片描述
在这里插入图片描述
此时,切换到普通好友,观察这上百个变量,会发现有少数变成了wxid开头的,不妨再次搜索以筛选,并将剩余变量全部加入到观察列表:
在这里插入图片描述

锁定变量确定接收方所在内存地址

将字符串显示范围扩大10倍,并在不同好友间反复切换,将没有变化的项目删除。最终还有10个左右的变量。在UI界面切换到好友,同时锁定前一半变量,然后在UI中切换到文件传输助手,发现数据变化如下:
在这里插入图片描述
同时,我们发现选中文件传输助手时,左侧的深色框总是定在我的好友身上,这说明其中一个变量用于决定将谁选中。现在想文件传输助手发送321,同时在手机端观察究竟谁收到了消息(PC端因为锁变量我也分不清谁是谁了)
在这里插入图片描述
结果是kbtx收到了消息,说明被锁变量其中之一决定了接收方。
将未锁定变量删除,同时将锁定变量的后一半解锁,切换到第三者,然后切换回好友,再切换回文件传输助手:
在这里插入图片描述
发送消息后,发现文件传输助手正确接收,说明接收方变量此时未锁定。删除所有被锁定的变量,将未锁定变量的前一半锁定,重复测试。最终,我们确定了表示接收方的变量所在地址为 0x13C5B030,只锁定这一个变量时,无论选中那个窗口,消息都会发送给小号 (注意不要把会话拖出微信主界面,否则变量会被重新分配,需要重复上述操作)

寻找发送消息的关键函数

进入OD,在这个位置下一个内存访问断点,很快微信断下:
在这里插入图片描述
放过所有无关断点,然后快速在当前窗口输入一段文本,点击发送,微信再次断下(记得放过点击发送之前的所有断点)。
观察堆栈,注意到这个函数接受了两个参数,其中一个是wxid,因此这个call很可能是用于发送消息的,不妨删除现有内存断点,下断:
在这里插入图片描述
微信再次断下后,我们只看到了wxid,没看到发送的具体消息,不妨向上寻找此函数开头下断点:
在这里插入图片描述
微信在此处断下后,观察堆栈,跳转到上级函数:
在这里插入图片描述
我们不妨观察一下ecx和eax里面存了些啥,发现ecx中疑似存储了用户信息,eax中则是一个数据结构的指针:
在这里插入图片描述在这里插入图片描述
当然,结合前面的分析,不难发现 ecx+0x18 处就是接收方的wxid,我们先前仅仅修改了这个值就把消息转给了别人,[eax]中似乎是一个结构体,由 int, char*, int, int 组成,多测试几次会发现第一个int始终为1,第三个始终表示消息的字节数,第四个则是大于字节数的最小的偶数或者与字节数相等:
在这里插入图片描述
在这里插入图片描述
当然,实际上根本不用这么麻烦,我们观察一下内存,会发现这个字符串以空字符(红色)结束,因此第三个和第四个整数我们给大点无伤大雅,最多也就是浪费一点内存空间,消息发完就回收了,因此不妨均设为消息字节数的2倍。(ecx的wxid也有类似的规律)
在这里插入图片描述

结论

综上所述,要想实现发送消息的call,首先要设法调用位于0x59C2DB8A处的函数(偏移为‭0x0010DB8A‬),这要求我们重点关注此时 ecx+0x18 处的指针与下面的指针长度,以及[eax]处的数据结构的4个变量。

免费评分

参与人数 15吾爱币 +24 热心值 +13 收起 理由
333ww + 1 + 1 我很赞同!
Kevin20210717 + 1 + 1 我很赞同!
zhuzhuxia111 + 1 + 1 我很赞同!
千百度° + 2 用心讨论,共获提升!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yan182 + 1 + 1 我很赞同!
初心wo + 1 + 1 热心回复!
ciss520 + 1 + 1 等待继续分析学习
lfm333 + 1 + 1 谢谢@Thanks!
nmy124 + 1 + 1 谢谢@Thanks!
兜兜风f + 4 + 1 热心回复!
三滑稽甲苯 + 1 我很赞同!
lookerJ + 1 + 1 热心回复!
jafck + 1 + 1 我很赞同!
submarine1620 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 侃遍天下无二人 发表于 2021-6-26 15:15
开发部分如文中所说,下次一定
zhuzhuxia111 发表于 2021-7-5 00:12
276155907 发表于 2022-6-6 11:39
楼主你好 看了你的这几篇帖子 受益很大 作为一个小白 有几个问题想请教一下 关于CE手动添加地址 用不用中括号 [ ] 包起来的 区别有哪些  另外本节课的 HOOK微信消息这一块 我看你说有时间B站发一个视频 现在有视频教程吗?
submarine1620 发表于 2021-6-26 15:49
高手,标记下学习学习,感谢
sharlion 发表于 2021-6-26 15:59
标记下学习学习,感谢
璐璐诺 发表于 2021-6-26 17:22
来了来了他来了 继续深造学习你的知识
mfzy888 发表于 2021-6-26 18:37
路过学习一下
su1245354434 发表于 2021-6-26 19:29
挺厉害的,收藏学习一下
天空の幻像 发表于 2021-6-26 19:46
来学习,支持加油
天象独行 发表于 2021-6-26 20:22
学习了,学习了。
afti 发表于 2021-6-26 21:00
学习微信使用知识
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 00:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表