lmclmc 发表于 2024-8-17 18:18

linux 微信 调试原创,可打印接收的消息,仅限技术交流,不定期更新

本帖最后由 lmclmc 于 2024-8-17 18:26 编辑

请先安装 wechat-beta_1.0.0.145_amd64.fixed.deb 版本的微信,然后将我的应用程序wechat 还有libX.so替换进去,即可实现收消息打印,效果如下。


原理:
通过gdb分析 当linux 微信收到消息后,必然会走到地址 0x9b0a7a,并且明文消息的内存地址会存放在x64架构的寄存器里面,我们接下来的做法就是hook这个地址位置,然后将寄存器里面的内容打印出来。

hook原理:
首先修改wechat的二进制文件,让其运行链接动态库时,多链接一个我的动态库libX.so.然后在libX.so里面做初始化操作,这个初始化操作主要就是修改机器指令,修改wechat应用内存地址 0x9b0a7a的指令,修改前记得先将里面的指令读取出来做个备份,然后插入mov rax, addr
jmp rax. 这两条指令的意思就是远程跳转,让CPU远程跳转到libX.so的动态库里面,跳转后,立即执行如下指令:

这一步的操作主要是为了备份寄存器信息,避免因为libX.so内部的函数调用等操作污染之前的寄存器。
然后将备份的寄存器地址输出出来,取数据并打印出来,这个数据就是明文消息内容。
[
如图所示,在rdi寄存器里面,
最后,我们要想办法把cpu跳转回wechat应用里面,恢复环境,
由于wechat应用内存机器指令被修改,所以现在拿出之前已经备份的wechat指令进行运行,然后再跳转回去,即可恢复环境,代码如下:

h


代码链接如下:
https://github.com/lmclmc/linux-wechat-hook.git

wholdcat 发表于 2024-8-20 15:58

大佬. 麻烦继续研究下 如果对方发来一张图片/视频/ 表情以及 分享一个网页 以及小程序这些的 是怎样的 :lol

baigeinan 发表于 2024-8-20 13:32

感谢分享好用

left3721 发表于 2024-8-20 17:19

感谢大佬分享!!!

fanliansuo1 发表于 2024-8-20 18:15

谢谢分享

xinyangtuina 发表于 2024-8-20 21:04

楼主加油

败笔网络 发表于 2024-8-20 21:26

是不是可以做机器人?

lmclmc 发表于 2024-8-21 07:33

败笔网络 发表于 2024-8-20 21:26
是不是可以做机器人?

可以,但还需要定位发消息的地址

dengdeng123 发表于 2024-8-21 11:07


感谢分享

htxz2022 发表于 2024-10-9 21:40

这个不错,可以往机器人开发了
页: [1] 2
查看完整版本: linux 微信 调试原创,可打印接收的消息,仅限技术交流,不定期更新