文章 实用工具

linux微信调试可打印接收的消息

首页 > 实用工具 > 正文

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

linux微信调试可打印接收的消息第3张插图

原理:

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

hook原理:

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

linux微信调试可打印接收的消息第4张插图

这一步的操作主要是为了备份寄存器信息,避免因为libX.so内部的函数调用等操作污染之前的寄存器。

然后将备份的寄存器地址输出出来,取数据并打印出来,这个数据就是明文消息内容。

linux微信调试可打印接收的消息第5张插图

如图所示,在rdi寄存器里面,最后,我们要想办法把cpu跳转回wechat应用里面,恢复环境,由于wechat应用内存机器指令被修改,所以现在拿出之前已经备份的wechat指令进行运行,然后再跳转回去,即可恢复环境,代码如下:

linux微信调试可打印接收的消息第6张插图

项目地址

https://github.com/lmclmc/linux-wechat-hook

免责声明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
Github加速工具fastgithub最新可用v2.1.4
« 上一篇 08月20日
网易云音乐故障补偿7天会员领取方法
下一篇 » 08月20日

还没有评论,快来抢沙发吧!