那条被撤回的消息,其实一直躺在你的电脑里
2026/9/5 22:45:58 网站建设 项目流程

那条被撤回的消息,其实一直躺在你的电脑里

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

你有没有想过一个问题:微信、QQ里"对方撤回了一条消息",消息到底去哪儿了?答案是——它哪儿也没去。在你看到"已撤回"提示的瞬间,那条消息的文字、图片、甚至语音,早就在毫秒级的时间里完整下载到了你的电脑内存里。撤回,只是客户端执行了一条指令:把已经显示出来的内容,再藏回去

这就是RevokeMsgPatcher这款微信QQ防撤回补丁的全部切入点。它是 Windows 平台的开源工具,通过改写微信/QQ/TIM 的核心 DLL 文件,让"隐藏指令"失效。从此,撤回的消息会原封不动地留在聊天窗口里。它的作者在项目描述里只写了一句话——"我已经看到了,撤回也没用了",语气嚣张,但技术上是认真的。

先看结论:它靠的不是拦截,而是"改写"

市面上很多防撤回方案走的是"监听"路线:在进程里注入钩子,拦截撤回指令,再通过第三方界面把历史消息重新展示出来。这类方案有先天短板——进程一退出就失效,软件一升级就崩。

RevokeMsgPatcher 选择了另一条路:直接修改微信、QQ 安装目录里的核心文件。微信是WeChatWin.dll,QQ 和 TIM 是IM.dll。它像外科医生一样,在这些几十上百 MB 的动态链接库里精准找到"处理撤回"的那几行机器码,改动几个字节,让撤回逻辑从此不再执行。文件被改了,改动就永久生效——重启、重开客户端都不影响,这才是"补丁"两个字的含义。

撤回背后的那一步:一条指令,把显示换成隐藏

要理解补丁改了什么,先看撤回在客户端内部是怎么发生的。以微信为例,当对方撤回消息,服务器会推送一条"revokemsg"通知,微信的WeChatWin.dll收到后,会调用一个函数去删除消息的 UI 显示。

专业逆向工程师(或者叫"特征搬运工"——项目作者的原话)会先用调试器附加到微信进程,在 DLL 里搜索revokemsg这个字符串,定位到那个负责执行撤回的函数。

找到函数之后,事情就变得很简单了。这个函数的入口处通常有一个条件跳转指令,用汇编写出来长这样:

test eax, eax je wechatwin.647F1B00 ; 条件成立才执行撤回

je的意思是"if equal then jump",翻译成人话就是:如果条件是撤回,就跳过去执行删除。补丁做的事,就是把这个je改成jmp——无条件跳转。条件再也不会成立,撤回指令到达后,客户端直接当它不存在。

这个操作在十六进制层面只是改了几个字节,但在行为层面,整个撤回功能被"架空"了。你不需要任何驻留进程、不需要后台服务、不需要网络代理,本地文件一改,一劳永逸。

场景一:工作群里那条被秒撤的通知

这是这个工具最典型的使用场景。同事在群里发了项目排期表,你刚点开,消息变成了"已撤回"。以前你只能干瞪眼,现在不会了。

安装补丁后,任何被撤回的消息都保持着原样躺在聊天记录里,前后文完整,表情、图片、文件一概不缺席。这一点在 QQ 和 TIM 上同样成立——它们的防撤回逻辑在IM.dll里,改动思路与微信完全一致。

对普通用户来说,你不需要关心这些 DLL 里发生了什么。你只需要知道:装上这个补丁,撤回在你这里就变成了"撤回了个寂寞"

场景二:一台电脑,同时登录两个微信

防撤回之外,这个项目还附带了一个实用的小工具:微信多开。

很多人需要同时登录工作号和生活号,但微信默认只允许运行一个实例。微信通过一个叫WeChat_App_Instance_Identity_Mutex_Name的互斥量来限制"只能开一个"——进程一启动就检查这个互斥量,发现已存在就拒绝再开。

多开工具的思路和防撤回如出一辙:在微信启动流程里处理掉这个互斥量,让第二个、第三个微信实例都能正常启动。它提供了自动模式(点击启动多开,即可连续拉起多个微信)和手动模式(对已有微信进程的互斥句柄进行精细处理)。自动模式适合绝大多数人,手动模式留给喜欢折腾的高级用户。

两个功能互不干扰:你可以只打防撤回补丁,也可以只开多开,或者两个一起用。如果你已经用防撤回补丁里的多开选项实现了多开,就不需要再单独运行这个小工具了。

上手三步,比你想的更简单

整个操作流程短到没有学习成本:

  1. 准备:系统是 Windows 7 及以上(不支持 XP),装有 .NET Framework 4.5.2 或更高版本;先关闭微信、QQ 或 TIM。
  2. 运行:右键以管理员身份运行RevokeMsgPatcher.exe(修改系统文件必须的权限)。安装版的微信/QQ 会自动从注册表读取安装路径,绿色版需要手动指定。
  3. 打补丁:在界面上勾选"防撤回"(微信还能同时勾选"多开"),点击"安装补丁!",等待片刻即可。

如果你是从仓库源码自己构建,克隆地址是:

git clone https://gitcode.com/GitHub_Trending/re/RevokeMsgPatcher

整个工程在RevokeMsgPatcher/目录下,包含了Modifier(补丁核心逻辑)、Matcher(特征码匹配)、MultiInstance(多开工具)等清晰的模块划分。

三个一定会遇到的坑,提前知道不慌

坑一:软件更新后,补丁失效。微信或 QQ 升级后,安装包会覆盖掉被修改过的 DLL 文件,防撤回自然消失。这是必然的,不是 bug。解决办法是更新后重新运行工具打一次补丁,三十秒的事。

坑二:杀毒软件弹警告。因为补丁直接改写了WeChatWin.dllIM.dll这类文件,部分杀毒软件会把它当作可疑行为。把工具加入白名单放行即可。它的所有操作都在本地完成,不上传任何数据。

坑三:万一出事,怎么还原?工具在修改前会自动把原始文件备份为*.h.bak。界面上有"备份还原"按钮,任何时候想恢复原状,一键还原。甚至你误打补丁后软件闪退、想回滚,都不用重新安装客户端。项目代码里对还原逻辑也做了保护——如果当前文件和备份版本不一致,会弹窗确认再操作,避免误覆盖。

一个值得知道的细节:版本兼容性是怎么做到的

你可能好奇:微信每个版本代码都变,工具怎么跟得上?

答案是两套机制并用。一类是精准匹配:针对特定版本号 + SHA1 哈希完全一致的 DLL,直接按固定偏移替换。另一类是特征码匹配:针对某个版本区间,用一段十六进制特征串去文件里模糊搜索,找到就替换——代码位置变了也能命中。

这个设计很聪明。精准匹配负责"稳",特征码负责"广",两者结合,让工具能覆盖微信 3.x、4.x 以及 QQ/TIM 大量历史版本。项目里RevokeMsgPatcher.Assistant目录还专门放了一个辅助工具,用来辅助生成和管理这些版本的补丁特征数据(Data/目录下按版本号存放着patch.json),你可以直观地看到这套版本数据是怎么组织维护的。

最后说几句

如果你受够了"对方已撤回一条消息"这种没头没尾的提示,如果你需要同时挂两个微信账号办公,RevokeMsgPatcher 值得你花三分钟试一次。它是开源项目,代码全部公开可审查,GPLv3 协议,作者在 README 里也坦诚地标注了防撤回特征来源——微信 4.0 之后的特征来自 BetterWX,QQNT 特征来自 NTQQAntiRecall,多开逻辑对应代码在RevokeMsgPatcher.MultiInstance/目录下。

技术这件事,有意思的地方在于:一个看似无解的"撤回",拆开看不过是一个跳转指令。工具把这条指令改了,消息就留下来了。重要的信息,从此不再因为一条"撤回"而错失。

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

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

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

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

立即咨询