授人以鱼不如授人以渔 | QQ、微信防撤回详解

前言:哦吼?暗恋的女生/男生发消息又撤回了?表白没看到怎么办?!今天整理一下PC端QQ、微信防撤回的具体步骤,自己修改dll文件,再也不用担心网络上的dll被植入后门啦!
P.S. 本教程理论上适合目前更新的所有版本QQ/Wechat,但手法有些粗糙。

工具准备

  1. x32dbg
  2. PC端Wechat/QQ

QQ防撤回

QQ版本

QQ9.2.3

破解过程

  1. 运行QQ,打开x32dbg,附加到进程QQ.exe
    附加程序
  2. 在符号面板搜索im.dll,来到im.dll模块(该模块是负责QQ个人消息和群消息接收的模块)
    搜索im.dll
    im.dll模块界面
  3. 搜索关键字符串:bytes_reserved 和 bytes_userdef
    “bytes_reserved”字符串负责个人信息的撤回,“bytes_userdef”字符串负责群消息的撤回。

    搜索bytes_reserved字符串
    双击进入第三个字符串,在入口的上一条地址处,修改汇编指令,让其直接到达test eax,eax命令处,这样就避免了消息的撤回。
    注意是修改push ecx
    修改完成
    搜索bytes_userdef字符串
    bytes_userdef界面
    修改push指令为jmp
    注意,此处是直接从push im.7A9D7C68处跳转到 test eax,eax
    完成修改
  4. 保存补丁并导出IM.dll文件进行替换
    生成补丁
    导出为IM.dll
  5. 成果图
    防撤回成功

过程总结

QQ消息撤回的机制并没有进行很好的防御,主要原因在于已经接受到的消息,是储存在本地的,而消息撤回,则是调用函数从本地撤回,只要阻止这个机制就能实现消息的防撤回。由于时间原因,过程中的部分函数的原理没有深究,准备后期再来分析一下,要是能做出一个一体化的exe文件就更好了。总体来说,这个防撤回做的还是很有意思,在过程中能学到很多东西。

微信防撤回

微信版本

微信 2.8.0.121

破解过程

  1. 启动微信,打开x32dbg,附加到微信进程。
    附加到wechat.exe后,在符号面板找到wechatwin.dll模块(该模块负责微信消息的撤回)
    找到wechatwin.dll
  2. 在wechatwin.dll模块中寻找revokemsg字符串
    wechatwin.dll模块
    "revokemsg"出现次数可能较多,要选择在ChatMgr::RefreshUnReadCountByRevoke下面的第一个(L "< revokemsg >"不算)
    搜索revoke,找到revokemsg字符串
  3. 点击跳转之后把当前位置下的第一个call指令nop掉(该call指令用于撤回消息)
    nop 目标指令
    nop完成
  4. 保存补丁文件、导出WeChatWin.dll文件并替换原安装目录下的文件
    保存补丁
  5. 成果图
    破解成功

过程总结

微信消息的撤回破解,重点还是在WechatWin.dll文件中,需要通过逆向找到dll文件中执行相关命令的函数,并nop掉(和上述QQ消息防撤回大同小异,一个是jmp跳转,一个是nop)。直接nop的手法还是显得有些粗糙。在查找资料的过程中,看到有些大佬是使用hook技术实现的消息防撤回机制,大感羡慕…在以后的学习过程中,想学习一些hook技术,在微信消息撤回时触发hook机制,以一个对话框的形式展示撤回内容。

发布了112 篇原创文章 · 获赞 77 · 访问量 9579

猜你喜欢

转载自blog.csdn.net/weixin_43092232/article/details/105286694