微信/QQ/TIM防撤回补丁五分钟上手:RevokeMsgPatcher 完整指南 微信/QQ/TIM防撤回补丁五分钟上手RevokeMsgPatcher 完整指南【免费下载链接】RevokeMsgPatcher:trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁我已经看到了撤回也没用了项目地址: https://gitcode.com/GitHub_Trending/re/RevokeMsgPatcherRevokeMsgPatcher 是一款面向 Windows 平台的开源防撤回工具原理是直接把 PC 版微信 WeChatWin.dll、QQ 的 IM.dll 里负责替换被撤回消息的那几个字节改掉——打完补丁之后对方撤回消息本地聊天框里的原文还留在原地。它覆盖微信 3.x、新版微信 4.xWeixin.dll、QQ、TIM 和 QQNT 五个客户端其中微信还附带一个多开开关。整个流程就是关应用、选路径、点一下两分钟的事。它能干什么防撤回与微信多开先看覆盖范围。程序内置的补丁数据把每个应用、要改的文件、支持的功能对应得很清楚应用被修改的文件支持的功能微信 3.xWeChatWin.dll防撤回、多开新版微信 4.xWeixin.dll防撤回、多开QQBin\IM.dll防撤回同改 3 处调用点TIMBin\IM.dll防撤回QQNTwrapper.node防撤回注意补丁规则本身不打包在 exe 里而是运行时从服务端拉取一份 patch.json。仓库里能看到这套数据从 Data/0.7 一路演进到 Data/2.1每个版本目录存一份快照——应用大版本一更新补丁数据跟着加一份这就是支持微信更新的机制。所谓多开改的是互斥体mutex检查的返回分支程序启动时本来会创建互斥体并判断是不是第一个实例补丁把这个判断结果改掉效果就是系统里永远只有一个微信。上手配置环境准备与四步操作环境准备Windows 7 及以上不支持 XP.NET Framework 4.5.2 以上——低于这个版本打开程序可能没反应或直接报错操作前关闭要打补丁的应用否则 DLL 被占用写入会失败以管理员身份运行路径检测需要读注册表写入安装目录也需要权限四步打完补丁启动程序等右下角状态区显示已获取到最新补丁信息它在线拉取 patch.json选安装路径。安装版的应用会从注册表自动拿到路径绿色版、或者微信 3.5 以后改过目录结构的程序还会按修改时间倒序翻一遍子目录找 WeChatWin.dll实在找不到就手动指定界面顶部会显示版本号和状态标签绿色已支持表示命中精确版本支持特征防撤回表示落入特征码版本区间红色不支持说明这个版本还没数据只能等更新勾选功能防撤回/多开点防撤回。杀毒软件大概率会弹窗警告——因为确实改了腾讯签名过的 DLL放行即可验证与还原补丁写入前会自动把原文件复制成同目录的.h.bak备份同版本不覆盖成功后界面会列出具体改动了几处、每处在什么偏移。想撤销时点还原程序会把.h.bak拷回去且会先比对当前文件与备份的版本号不一致时会弹窗确认再动手。有一个高频坑应用每次自动更新后都要重新打一次补丁新版 DLL 的字节布局变了旧补丁位置全部失效。它怎么在几 MB 的 DLL 里找到要改的字节这是整个项目技术含量最高的部分。匹配逻辑集中在Matcher/目录BoyerMooreMatcher、FuzzyMatcher、ModifyFinder 三个类而改哪几个字节的知识全部放在 patch.json 里分两套体系。双轨匹配SHA1 精确校验与特征码老版本比如微信 2.x~3.3走精确路线配置里直接记录每个版本的文件 SHA1改动前/改动后各一份和目标偏移量找到文件就按 Position 覆写 Content 字节。副作用是很严格的校验——如果你的文件 SHA1 恰好等于 SHA1After程序会立刻报你已经安装过此补丁拒绝重复操作。新版本改用特征码路线因为偏移量每个版本都在漂。配置里给一段字节序列当特征其中630x3F是通配符表示这个位置不关心是什么。查找分两阶段先取第一个通配符之前的头串用 Boyer-Moore 算法在整个 DLL 里快速扫一遍候选位置再在每个候选位置逐字节核对完整特征通配符跳过。这套两步法把几 MB 文件的搜索压到毫秒级——程序里甚至留着 Stopwatch 打印耗时。以微信 4.0 的防撤回特征为例配置大致长这样取自 2.1 版 patch.json{ 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, ...], Category: 防撤回 }为什么把 JNE 改成 JMP 就能防撤回看这段特征码就能理解原理Search 的第一个字节是1170x75JNE 条件跳转Replace 换成2350xEBJMP 无条件跳转后面 12 个字节一个没动——而且它们拼起来正好是字符串 revokemsg114r、101e、118v、111o、107k……。也就是说开发者先用调试器在 DLL 里搜 revokemsg 字符串定位到处理撤回的代码块找到那条若消息处于可撤回态则执行替换的条件跳转再把 JNE 拍成 JMP条件不再被检查撤回分支永远走不到原文自然留在聊天框里。QQ 的改法不同撤回逻辑在 IM.dll 里有三处调用点每处都把一条调用指令连同跳转改写为一串235 位移 90 填充JMP 短跳 NOP等于把三个入口一次性焊死。匹配数还会用来判断安装状态如果 Search 串一个都搜不到、Replace 串却存在说明该功能已经打过补丁程序会提示已安装而不是静默重复写。打不上补丁按现象排查补丁流程里每个失败点都有对应的明确提示对照着查通常三分钟定位现象原因处理自动获取不到安装路径绿色版或非标准安装手动浏览选择目录标签显示不支持版本太新补丁数据还没收录等 patch.json 更新或回退应用版本版本对但报文件校验不通过DLL 已被其他补丁程序改过SHA1 对不上还原后确认是否装过别的工具特征匹配数不一致部分特征已被替换装过一半或最新版特征漂移按提示取消已装功能的勾选最新版等作者更新点还原提示备份文件不存在.h.bak被清理或版本不符重装应用获取干净 DLL 再打打完微信能开但功能没生效应用更新过、补丁丢失重新走一遍四步流程另外提一句多文件应用如微信的 dll exe打补丁是先全部备份、再逐个写入、中途失败自动还原已改文件的原子式流程所以不会因为改了一半留下坏文件。想深入看什么代码组织对逆向爱好者很友好三个目录各管一段Modifier/下每个应用一个类WechatModifier、QQModifier、WeixinModifier……共同继承 AppModifier只重写怎么找路径、怎么取版本号Matcher/是纯算法层不关心改什么应用真正的知识全在 patch.json 的FileModifyInfos精确版本与FileCommonModifyInfos特征码 版本区间两个字段里——想支持自己手头的版本照着格式补一份特征码就能贡献给社区。总结一下整条链路在线拉取补丁数据 → 定位安装目录 → SHA1 或特征码二选一定位字节 → 备份后覆写 → 失败可原子回滚。它本质上是一台带版本感知的二进制字节替换器把逆向工程师手工做的事做成了两分钟的点击流程——理解了 JNE 变 JMP 这一步你就理解了全部魔法。【免费下载链接】RevokeMsgPatcher:trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁我已经看到了撤回也没用了项目地址: https://gitcode.com/GitHub_Trending/re/RevokeMsgPatcher创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考