RevokeMsgPatcher 防撤回补丁:3 步让微信/QQ/TIM 撤回的消息不再消失
2026/9/12 5:10:49 网站建设 项目流程

RevokeMsgPatcher 防撤回补丁:3 步让微信/QQ/TIM 撤回的消息不再消失

【免费下载链接】RevokeMsgPatcher:trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了)项目地址: https://gitcode.com/GitHub_Trending/re/RevokeMsgPatcher

一条消息刚发出去就被对方撤回,聊天窗口里只剩一句"对方撤回了一条消息"。开源项目 RevokeMsgPatcher 给出的思路很直接:既然消息是被程序逻辑撤掉的,那就把这段逻辑在二进制层面改掉。这款 Windows 平台的消息撤回恢复工具(即常说的微信防撤回教程里的主角)通过修改微信、QQ、TIM 核心 DLL 中的几个字节,让撤回操作彻底失效——被撤回的内容仍留在对话框里,随时可看。

"消息已撤回"带来的麻烦

撤回功能本意是给用户纠错的机会,但对某些场景并不友好:

  • 工作沟通:同事误发的敏感信息撤回后,群里的讨论依据就断了,翻记录找不到源头;
  • 重要信息:对方撤回的关键内容(地址、金额、承诺)无从追溯,只能靠截图存证;
  • 审计留痕:需要完整沟通记录的场景里,"消失"本身就是最大的问题。

RevokeMsgPatcher 的定位就是把这些被撤回的消息"钉"在原地。它不是一个常驻进程,而是一次性的文件修改工具——打完补丁后重启软件,防撤回能力就随 DLL 生效。

三步跑通微信防撤回补丁安装

动手前的检查清单

检查项要求
操作系统Windows 7 及以上,不支持 XP
运行环境.NET Framework 4.5.2 或更高(低于此版本打开程序可能无反应或直接报错)
运行权限以管理员身份运行 RevokeMsgPatcher
目标软件微信/QQ/TIM 必须完全退出,包括后台进程

操作顺序

  1. 获取工具:从 Releases 下载最新版(当前补丁库版本为 2.1),解压即用;
  2. 自动定位路径:安装版微信/QQ/TIM 一般能被自动从注册表读出来,绿色版需要手动指定安装目录;
  3. 点击"防撤回":界面可能会有一段时间无响应,属于正常现象,等它扫完字节再动。

打补丁的过程本质是改写WeChatWin.dllIM.dll,杀毒软件很可能弹出警告,放行即可。

打完之后的两个动作

  • 重新启动目标软件,验证撤回的消息是否照常显示;
  • 记住一条铁律:软件更新后必须重新打补丁,官方说明里特意加粗强调了这一点。

防撤回补丁内部到底改了什么

先找到 "revokeMsg",再改一个字节

补丁不是乱改的。以微信 4.0.3.36 为例,工具会在Weixin.dll里搜索一段特征字节:

117,33,72,184,114,101,118,111,107,101,109,115,...

其中114,101,118,111,107,101,109,115恰好就是 ASCII 字符revokeMsg——一个和"撤回"直接相关的字符串。整段特征确认位置后,只需把开头的117(0x75,一条条件跳转)替换成235(0xEB,JMP 无条件跳转):

235,33,72,184,114,101,118,111,107,101,109,115,...

条件跳转被换成无条件跳转后,"要不要执行撤回处理"的判断被绕过去了。不同版本的改法略有差异:老版本微信常把116(0x74,JZ/JE 类条件跳转)改成235,个别更老的版本(如 2.8.0.112)还会把某一处字节直接换成195(0xC3,RET 返回指令),让撤回处理函数提前退场。

动手之前,先对 SHA1

每条补丁记录都带着两个哈希值。以WeChatWin.dll3.3.5.25 为例,记录里写着:

  • 修改前 SHA1:3e94753ccbc2799d98f3c741377e99bdae33b4cf
  • 修改后 SHA1:ab98f83fc16674ac4911380882c79c3ca4c2fd71

工具执行时会先计算目标文件当前的 SHA1 与SHA1Before比对,一致才允许写入;写完后再用SHA1After复核。这样能保证补丁只落在"确认无误"的文件上,改错了也一目了然。

两套版本匹配方式

补丁库里其实并存两种描述修改点的方式:

  1. 精确改点(老版本微信、QQ、TIM):直接指定字节偏移,例如IM.dll9.2.3.26592 在偏移371605处写入235,9,144,144,144——前两个字节是JMP +9,后面三个144(0x90,NOP)用来把原来的调用指令填平;
  2. 特征码搜索替换(新版本通用):给定Search/Replace字节串,配合StartVersion/EndVersion划定版本区间,让同一份规则覆盖一片相邻版本。

匹配本身由 Matcher 模块 里的 Boyer-Moore 算法(坏字符 + 好后缀双启发式)完成,ModifyFinder.cs 还负责交叉校验:如果特征串搜不到、但替换后的串已存在,会判定"补丁已安装"并提示取消勾选对应功能,避免重复打补丁。

防撤回版本支持对照

软件被修改的文件补丁库覆盖情况(v2.1)
微信 3.xWeChatWin.dll(3.7 版本同时含WeChat.exe3.1.0.00 ~ 4.0.3.0,另有 3.3.5.x、2.8.0.x 等老版本的精确改点
微信 4.x(新架构)Weixin.dll4.0.0.0 起,含 4.1.12.0 等新版
QQBin\IM.dll9.0.4.23786 ~ 9.2.3.26592 精确改点;9.1.6.00000 起、9.4.7.00000 起走特征码
TIMBin\IM.dll3.0.0.00000 起(含 3.4.0.00000 之后的规则)
QQ NTversions\{version}\resources\app\wrapper.node9.8.0.19000 起(含 9.8.0.19306~19307 的规则)
QQ 轻聊Bin\IM.dll7.9.14308.0 / 7.9.14314.0

完整的修改点清单就躺在 RevokeMsgPatcher.Assistant/Data/ 目录下,从 0.7 一路排到 2.1,每个小版本一份patch.json,方便对照研究每个版本的具体改法。

除了防撤回,微信这一支还额外提供多开能力:补丁规则里用144(NOP)和233(0xE9,近跳转)替换互斥相关的指令,同一账号多实例共存。规则中甚至区分了"防撤回带提示(新)"这种保留撤回提示、只阻止内容消失的温和模式。

补丁失效排查速查

  • 杀毒软件拦截/文件被恢复:工具修改的是WeChatWin.dllIM.dll这类核心文件,误报很常见。把工具加入信任,再确认 DLL 没被还原。
  • 提示"已经安装了对应功能的补丁":说明特征串已搜不到、替换串已就位,取消勾选该功能即可,不用重复打。
  • 提示"特征码匹配数不一致":通常是部分功能已被打过,或当前软件版本特征变了。先核对勾选的功能组合,是最新版且特征失效的话,等补丁库更新。
  • 补丁打完、软件能开,但撤回照旧:确认用的工具是最新版、目标版本在上面的支持表里;然后重启软件再验证。
  • 改了想还原:补丁会先把原文件备份成.h.bak(见 FileHexEditor.cs 中的FileBakPath逻辑),把备份拷回去即可恢复原状。
  • 软件刚更新:更新后补丁必然失效,重跑一遍流程,这是最常见的"防撤回突然没用"原因。

进阶:源码结构与配套工具

想深入的话,整个工程按职责切得很清楚:

  • Modifier 模块:每个 App 一个修改器——WechatModifier.cs、WeixinModifier.cs、QQNTModifier.cs 等,负责找安装路径、组装修改点、执行写入;
  • Matcher 模块:BoyerMooreMatcher.cs 与 FuzzyMatcher.cs 提供字节级搜索,ModifyFinder.cs 负责判定"该不该改、改没改过";
  • Model 模块:ModifyInfoChangeReplacePatternTargetInfo定义了补丁 JSON 的完整数据结构。

仓库里还有一个独立子项目 RevokeMsgPatcher.MultiInstance/,是一个通用的微信多开工具,附带自己的进程管理逻辑(ProcessUtil.cs)。QQ NT 的补丁规则里还留有逆向笔记,比如 9.8.0.19306 规则备注了"重新定位msg_recall_worker.ccHandleRecallSysMsg",对做逆向分析的人是一份现成的路线图。项目以 GPLv3 协议开源,早期方案源自 wechat_anti_revoke,2.1 版本 QQ NT 特征来自 NTQQAntiRecall,微信 4.0 之后的特征来自 BetterWX。

下次再看到"对方撤回了一条消息",那部分内容会安安静静留在原地——而你只需要记住:每次软件更新之后,这个补丁要重新打一遍。

【免费下载链接】RevokeMsgPatcher:trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了)项目地址: https://gitcode.com/GitHub_Trending/re/RevokeMsgPatcher

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询