PC 端微信防撤回与多开 Patch

PC 端微信防撤回与多开 Patch

这是一个成果向教程,参考了一些网上的教程汇总而成。仅用于技术交流。

思路

  1. 撤回的英文 “recall”、”revoke”;多开猜测用了 mutex
  2. notepad++ 对所有文件进行搜索
  3. 对结果分析,定位到关键逻辑位于 WeChatWin.dll 文件中
  4. 附加到进程
  5. 选择对应模块
  6. 搜索关键字 “revoke”
  7. 下断点
  8. 调试
  9. 记录特征值(方便下次修改)

通过网上各位大牛的研究,我们已经知道一下信息:

  • 撤回、限制多开的逻辑都位于 WeChatWin.dll 文件中
  • 撤回相关的关键词 revokemsg
  • 多开相关的关键词 WeChat_App_Instance_Identity_Mutex_Name

工具

调试

登录微信,这里登小号测试

image-20221222151758533

打开 x32dbg,将微信进程附加进去

image-20221222151830104 image-20221222151849988

微信进程已经附加,微信会进入假死状态,点不动是正常的

image-20221222152029216

切换到符号选项卡,在左下角搜索 WeChatWin.dll ,双击 wechatwin.dll 进入 CPU 选项卡

image-20221222152103370

进入后右键 搜索 -> 当前区域 -> 字符串

image-20221222152156692

防撤回

直接搜索关键词 revokemsg,然后双击第一个"revokemsg"进入 (站在了巨人的肩膀上)

image-20221222153829360

进入可以看到如下,该指令上一条是

1
6EA62DEB | 74 32                    | je wechatwin.6EA62E1F                   |

je wechatwin.6EA62E1Fjejump if equal,这条指令以下的框框(即 0x6ea62deb 地址到 0x6ea62e1f 地址间的指令)为撤回的逻辑。

image-20221222153905922

跳过该逻辑,将 je 改成 jmp,直接跳过;也可将 call 删掉或用 nop 填充

image-20221222154837170 image-20221222154904367 image-20221222154932229

到这撤回功能就被我们跳过了

多开

搜索关键词 WeChat_App_Instance_Identity_Mutex_Name,然后双击第一个L"WeChat_App_Instance_Identity_Mutex_Name"进入

image-20221222155142916

需要进行修改的是当前行的上面第一个出现的 push ebp,为该程序的入口,启动的时候进行唯一性检查

image-20221222155226614

push ebp 修改为 ret 即可,即把检查只开一个微信的功能直接 return

image-20221222155427272 image-20221222155445694

到这防多开也做好了

打 Patch

点击生成补丁的按钮,然后点击修补文件就可以得到修改后的 WeChatWin.dll

image-20221222155814551 image-20221222160007408 image-20221222160039615

最后将原 WeChatWin.dll 备份一下,再将打过 Patch 的文件替换为原本的文件,就可以实现功能了

image-20221222160136879

最后看看功能:

防撤回:

image-20221222160257871 image-20221222160326874

image-20230102000819774

多开:

image-20221222160744866

参考文章


PC 端微信防撤回与多开 Patch
https://52hertz.tech/2022/12/22/Wechat_revoke/
作者
Ustin1an
发布于
2022年12月22日
许可协议