消息发出就被撤回?这款开源补丁让微信/QQ/TIM消息永久可见
【免费下载链接】RevokeMsgPatcher:trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了)项目地址: https://gitcode.com/GitHub_Trending/re/RevokeMsgPatcher
RevokeMsgPatcher 是一款面向 Windows 的开源补丁工具,专门针对 PC 版微信、QQ、TIM 的"消息已撤回"功能:打上补丁后,对方撤回的消息会原样留在聊天记录里,同时它还顺带解决了微信多开。普通用户只需点几下鼠标,想深究原理的爱好者也能在源码里找到完整答案。
先盘点痛点:被秒撤的消息里,哪些最让人意难平
回想一下这些似曾相识的画面:
- 同事发来一份项目排期文档,你刚点了保存,消息就变成了"对方撤回了一条消息";
- 客户确认了报价,你正要截图留证,价格条款瞬间消失;
- 朋友分享的学习资料链接,只在你眼前闪了两秒;
- 群里有人发通知又撤回,后面跟着一堆问号,没人知道说了什么。
问题在于,撤回的一方往往不会重新发送,而"没看到"的信息就是彻底错过的信息。防撤回补丁的价值,是把你已经收到的内容稳稳留在屏幕上,不让任何一方有"反悔"的机会。
如果你也为此错过过东西,RevokeMsgPatcher 值得花十分钟装一次。
微信消息防撤回工具能用前,请先确认这4项环境条件
打补丁本质上是在改动程序文件,所以环境不对会直接失败。安装前请对照下面这张表自查:
| 检查项 | 要求 | 怎么确认 |
|---|---|---|
| 操作系统 | Windows 7 及以上,不支持 XP | 右键"此电脑"→属性 |
| 运行框架 | .NET Framework 4.5.2 或更高 | 低于此版本程序可能无反应 |
| 目标软件 | 微信 / QQ / TIM 已安装且已完全关闭 | 检查右下角托盘是否还有残留进程 |
| 权限 | 以管理员身份运行 | 右键补丁程序→"以管理员身份运行" |
版本方面不用太担心。项目内置了覆盖多年的补丁数据:微信从 2.6.6 一路覆盖到 4.x 新版(4.0 之后的文件是 Weixin.dll),QQ 覆盖 9.0.4.23786 至 9.4.7+,TIM 覆盖 2.3.2 至 3.4.0+,还包括新架构的 QQNT。补丁数据按版本分目录存放,例如RevokeMsgPatcher.Assistant/Data/下有 0.7 到 2.1 各版本的patch.json,工具启动时会自动拉取匹配当前版本的那一份。
PC端防撤回软件怎么用:微信/QQ/TIM三端打补丁步骤
整个操作走一遍也就两三分钟。下面这段代码是从源码仓库克隆项目、用 Visual Studio 自行编译的命令,适合想亲手构建的开发者:
git clone https://gitcode.com/GitHub_Trending/re/RevokeMsgPatcher cd RevokeMsgPatcher执行后你就拿到了完整的工程文件,双击RevokeMsgPatcher.sln即可编译;不想折腾编译的话,直接用发布页的预编译版本,效果完全一样。
拿到程序后的操作步骤如下:
- 关闭微信/QQ/TIM,右键以管理员身份运行 RevokeMsgPatcher;
- 在程序主界面切换到你要处理的目标(微信/QQ/TIM 三选一);
- 软件会自动从注册表读取安装路径,绿色版装的应用则需要手动点击"…"按钮指定目录;
- 勾选需要的功能(防撤回、多开),点"安装补丁",等待几秒;
- 重新启动对应软件,补丁即生效。
主界面长这样——左上角选择目标软件,中间显示当前版本和可勾选的功能,右下角是安装和还原按钮:
点击安装后,程序会按顺序做四件事:校验文件完整性 → 按版本和哈希匹配补丁数据 → 把原始 DLL 备份成*.h.bak文件 → 写入修改并确认结果。下图就是补丁实际写入时的画面,左侧是待修改的字节,右侧列出每条改动(比如74 -> EB这类指令替换):
万一以后想恢复原状,回到程序点"备份还原"即可,几秒钟回到未打补丁的状态。唯一的注意点:微信/QQ/TIM 升级版本后,补丁会被新文件覆盖,需要重新安装一遍。
防撤回补丁的原理:把"条件跳转"改成"无条件跳转"
这部分不难理解,先记住一个背景:PC 端聊天软件把"是否撤回"实现为一段程序判断。当收到撤回指令时,程序先检查消息状态,满足条件就跳去执行"从聊天记录里移除这条消息"的逻辑。用汇编写出来大致是这样:
; 打补丁前:条件满足才跳去执行撤回逻辑 test eax, eax jge do_revoke ; 7D xx:满足条件才跳转 ; 打补丁后:不管条件如何,直接跳过撤回逻辑 test eax, eax jmp skip_revoke ; EB xx:无条件跳转看出差别了吗?jge(大于等于则跳)和jmp(无条件跳)之间,只差一个操作码字节。工具做的就是把74/7D这类条件跳转字节替换成EB,让"删除消息"的代码永远不被走到。一次只改一两个字节,不动其他任何功能,这正是这种方案稳定、干净的原因。
如何定位该改哪里?靠的是特征码。项目用一条字节序列作为"锚点",其中63是通配符(?的 ASCII 码正好是 63),表示该位置字节不参与匹配。以微信 4.0 的防撤回特征为例(节选):
{ "Category": "防撤回", "Search": [117, 33, 72, 184, 114, 101, 118, 111, 107, 101, 109, 115, ...], "Replace": [235, 33, 72, 184, 114, 101, 118, 111, 107, 101, 109, 115, ...] }Search是在 DLL 里要查找的原始字节,Replace是找到后替换成的新字节。留意中间那一串114, 101, 118, 111, 107, 101, 109, 115,它们正是revokemsg的 ASCII 编码——特征码就锚定在程序自己的逻辑字符上。替换后首字节从117(JNZ 条件跳转)变成235(JMP 无条件跳转),程序遇到撤回指令时不再"看脸色行事",消息从此留在聊天记录里。
当初逆向工程师正是这样一步步定位的:先用调试器附加微信进程,在内存里搜索revokemsg字符串,锁定判断逻辑,再动手修改跳转指令。下面的截图就是搜索到关键字符串时的画面:
而下面这张图则直观展示了"条件跳转改无条件跳转"的现场——被红色标记的je指令就是下手点:
顺带一提,补丁支持两种匹配方式:老版本走"精准匹配",用 SHA1 哈希确认文件版本后,在固定位置写入改动;新版本走"特征码模糊匹配",按版本范围自动适配,这也是它能追上软件频繁更新的关键。
微信多开补丁的实现思路:绕过互斥锁检查
多开的原理同样只有一句话:微信用一把"互斥锁"来保证同一时刻只能跑一个实例。这把锁有一个固定的名字,用调试器在进程里搜索WcChat_App_Instance_Identity_Mutex_Name就能看到它的身影:
补丁的做法很巧妙——直接让"检查互斥锁"这个函数在入口处就提前返回。看这组多开特征码(节选):
{ "Category": "多开", "Search": [85, 86, 87, 83, 72, 129, 236, ...], "Replace": [195, 86, 87, 83, 72, 129, 236, ...] }函数开头的85(push ebp,标准函数序言)被替换成195(ret,立即返回)。效果就是:互斥检查逻辑一进来就"下班回家",微信再也检测不到"已经有一个实例在跑",于是你可以同时登录多个账号。改动只落在函数入口,不影响微信其他任何功能。
如果你连补丁都不想打,只想用多开,项目还附赠了一个独立工具(RevokeMsgPatcher.MultiInstance),它无视微信版本,点一下"启动多开"就能批量拉起多个微信实例,适合只想多开、不需要防撤回的用户。
微信/QQ/TIM防撤回补丁不生效时怎么排查
按下面的清单逐条对照,绝大多数问题都能自己解决:
Q:补丁一直提示失败?A:确认目标软件已彻底关闭(含托盘残留),并以管理员身份重新运行工具。杀毒软件弹出拦截时选择放行,因为改动 DLL 的行为容易被安全软件误报。
Q:功能没生效,消息还是被撤?A:先看主界面显示的版本后面是"已支持"还是"不支持"。软件版本过新时,特征码可能还没跟上,更新到补丁最新版本再试即可。
Q:提示"文件校验不通过"?A:说明这个 DLL 可能被其他补丁程序改过,与内置特征对不上。先把软件恢复原状(重装或还原备份),再重新打补丁。
Q:打完补丁软件打不开了?A:不要慌,回到工具点"备份还原",从*.h.bak恢复原始文件,软件即可恢复正常运行。这也是每次打补丁前都会自动备份的意义所在。
使用防撤回工具前必须了解的注意事项与合规边界
- 补丁只影响你本机的显示逻辑,对方能否看到"已撤回"提示由双方版本共同决定,新旧版本混用可能表现不一致;
- 修改的是微信
WeChatWin.dll、QQ/TIMIM.dll等核心文件,属系统级改动,打补丁前请确认这些软件的备份文件完好; - 软件每次升级都会覆盖补丁,升级后需要重新安装,不要抱着"打一次管永久"的期望;
- 部分功能(如新老两种防撤回模式)存在取舍,界面上有详细提示,按需二选一即可。
最后提醒一句:本工具仅供技术研究与学习使用,请遵守相关法律法规及微信、QQ、TIM 的软件使用协议。
接下来你可以做什么
如果这篇教程让你有了动手的兴致,可以从下面三件事里挑一件开始:
- 直接下载预编译版本,先给主力微信打上防撤回和多开补丁,体验一把"消息永远留在屏幕上"的踏实感;
- 克隆源码
git clone https://gitcode.com/GitHub_Trending/re/RevokeMsgPatcher,打开RevokeMsgPatcher/Modifier/目录,逐个研究 WechatModifier、QQModifier、TIMModifier 等修改器是怎么组织代码的; - 翻看
RevokeMsgPatcher.Assistant/Data/下的各版本patch.json,对照文章里讲的特征码格式,理解"版本越多、维护越勤"的社区协作模式。
信息时代,重要的不是阻止别人撤回,而是别让自己因为一条消失的消息错过该抓住的东西。装好它,下次看到"撤回了一条消息"时,你就能从容一笑:没关系,我已经看到了。💪
【免费下载链接】RevokeMsgPatcher:trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了)项目地址: https://gitcode.com/GitHub_Trending/re/RevokeMsgPatcher
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考