news 2026/6/2 23:40:00

逆向工程深度解析:如何通过二进制补丁实现微信QQ消息防撤回

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
逆向工程深度解析:如何通过二进制补丁实现微信QQ消息防撤回

逆向工程深度解析:如何通过二进制补丁实现微信QQ消息防撤回

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

RevokeMsgPatcher 是一款基于逆向工程和二进制补丁技术的Windows平台防撤回工具,通过修改微信的WeChatWin.dll和QQ/TIM的IM.dll文件,巧妙绕过消息撤回检测机制。该工具采用模块化架构设计,支持多版本兼容性处理,为技术爱好者提供了一套完整的二进制修改解决方案。

消息撤回机制的技术挑战

在即时通讯软件中,消息撤回功能通常通过客户端与服务器协同实现。当用户撤回消息时,客户端会执行特定逻辑来隐藏或删除已发送的消息。对于微信和QQ这类闭源软件,实现防撤回功能需要深入分析其二进制文件,定位关键代码段并进行修改。

传统的手动逆向分析过程复杂且容易出错,需要开发者在每次软件更新后重新分析二进制文件。RevokeMsgPatcher通过自动化的二进制模式匹配技术,解决了版本兼容性和维护成本的问题。

二进制补丁技术实现原理

核心修改机制

防撤回功能的核心在于修改条件跳转指令。在x86/x64汇编中,条件跳转指令如JE(Jump if Equal)和JMP(Unconditional Jump)的区别在于前者仅在特定条件满足时跳转,而后者总是跳转。

// 在 RevokeMsgPatcher/Model/ReplacePattern.cs 中定义的替换模式 public class ReplacePattern { public byte[] Search { get; set; } // 搜索的字节模式 public byte[] Replace { get; set; } // 替换的字节模式 public string Category { get; set; } // 功能分类:防撤回/多开 }

以微信WeChatWin.dll为例,典型的防撤回修改是将0x74(JE指令)替换为0xEB(JMP指令),将条件跳转变更为无条件跳转,从而绕过撤回检测逻辑。

使用x32dbg调试器分析微信WeChatWin.dll中的revokemsg相关字符串

版本兼容性数据库

RevokeMsgPatcher通过详细的版本数据库支持多版本兼容。在 RevokeMsgPatcher.Assistant/Data/ 目录中,每个版本都有对应的补丁配置文件:

{ "Name": "WeChatWin.dll", "Version": "3.3.5.25", "SHA1Before": "3e94753ccbc2799d98f3c741377e99bdae33b4cf", "SHA1After": "ab98f83fc16674ac4911380882c79c3ca4c2fd71", "Changes": [ {"Position": 3413977, "Content": [235]}, {"Position": 12159591, "Content": [235]} ] }

每个补丁记录包含文件哈希验证、修改位置和替换内容,确保补丁的精确性和安全性。

架构设计与模块实现

核心修改器模块

项目的核心修改器位于 RevokeMsgPatcher/Modifier/ 目录,采用面向对象设计:

  • WechatModifier.cs- 微信防撤回实现
  • QQModifier.cs- QQ防撤回实现
  • TIMModifier.cs- TIM防撤回实现
  • FileHexEditor.cs- 二进制文件编辑器基类

每个修改器继承自AppModifier基类,实现了统一的文件验证、补丁应用和版本检测接口。

x32dbg补丁窗口显示具体的二进制指令修改

模式匹配算法

在 RevokeMsgPatcher/Matcher/ 目录中,BoyerMooreMatcher.csFuzzyMatcher.cs实现了高效的二进制模式匹配算法:

// Boyer-Moore算法优化搜索性能 public static int IndexOf(byte[] source, byte[] pattern) { // 预处理坏字符表 int[] badCharSkip = new int[256]; for (int i = 0; i < 256; i++) badCharSkip[i] = pattern.Length; for (int i = 0; i < pattern.Length - 1; i++) badCharSkip[pattern[i]] = pattern.Length - i - 1; // 执行搜索 int offset = 0; while (offset <= source.Length - pattern.Length) { // 从后向前匹配 int j = pattern.Length - 1; while (j >= 0 && pattern[j] == source[offset + j]) j--; if (j < 0) return offset; // 找到匹配 offset += Math.Max(1, badCharSkip[source[offset + j]] - (pattern.Length - 1 - j)); } return -1; }

数据模型设计

项目的核心数据模型在 RevokeMsgPatcher/Model/ 目录中定义:

  • ModifyInfo.cs- 精确版本补丁信息
  • CommonModifyInfo.cs- 通用版本范围补丁信息
  • ReplacePattern.cs- 字节模式替换规则
  • Change.cs- 具体修改位置和内容

这种设计支持两种补丁方式:基于精确版本SHA1校验的精确补丁和基于字节模式匹配的通用补丁。

逆向工程实践步骤

1. 字符串定位与分析

首先使用逆向工具(如x32dbg、IDA Pro)搜索关键字符串如"revokemsg"、"撤回消息"等,定位相关函数:

x32dbg调试器附加到QQ进程进行逆向分析

2. 二进制模式提取

分析找到的函数,识别关键的条件跳转指令。例如,在消息撤回检测函数中通常会有类似以下模式的代码:

cmp eax, 0 ; 比较返回值 je 撤回处理函数 ; 如果相等则跳转到撤回处理

对应的二进制模式可能是83F800 740A(比较eax与0,如果等于则跳转10字节)。

3. 补丁规则定义

将识别出的模式转换为ReplacePattern对象:

var antiRecallPattern = new ReplacePattern { Search = new byte[] { 0x83, 0xF8, 0x00, 0x74, 0x0A }, // cmp eax,0; je +10 Replace = new byte[] { 0x83, 0xF8, 0x00, 0xEB, 0x0A }, // cmp eax,0; jmp +10 Category = "防撤回" };

4. 多版本兼容性处理

通过分析不同版本的二进制文件,建立版本范围与补丁规则的映射关系:

{ "Name": "WeChatWin.dll", "StartVersion": "3.9.0.0", "EndVersion": "3.9.2.0", "ReplacePatterns": [ { "Search": [133,192,116,50,185,63,63,63,63,138], "Replace": [133,192,235,50,185,63,63,63,63,138], "Category": "防撤回(老)" } ] }

技术实现细节

文件哈希验证机制

在应用补丁前,工具会计算目标文件的SHA1哈希值,与预定义的SHA1Before值比对,确保文件未被篡改:

public bool VerifyFileIntegrity(string filePath, string expectedSHA1) { using (var sha1 = SHA1.Create()) using (var stream = File.OpenRead(filePath)) { byte[] hash = sha1.ComputeHash(stream); string actualSHA1 = BitConverter.ToString(hash).Replace("-", ""); return actualSHA1.Equals(expectedSHA1, StringComparison.OrdinalIgnoreCase); } }

安全备份与恢复

工具在修改前会自动备份原始文件,备份文件以.bak后缀保存。如果补丁失败或用户需要恢复,可以通过备份还原功能恢复原始文件。

将JE指令修改为JMP指令实现无条件跳转

多开功能实现

除了防撤回,工具还提供微信多开功能。这是通过修改互斥体检查逻辑实现的:

{ "Search": [85,86,87,83,72,129,236,63,63,63,63], "Replace": [195,86,87,83,72,129,236,63,63,63,63], "Category": "多开" }

将函数入口的PUSH EBP(0x55)改为RET(0xC3),使互斥体检查函数直接返回,绕过单实例限制。

项目架构优势

模块化设计

项目采用清晰的模块分离:

  • 核心修改器:处理不同应用的特定逻辑
  • 匹配算法:提供高效的二进制搜索
  • 数据管理:维护版本兼容性数据库
  • 用户界面:提供友好的图形化操作

可扩展性

通过配置文件驱动的设计,新版本的补丁可以通过更新JSON配置文件实现,无需修改核心代码。这种设计使得社区贡献和维护变得更加容易。

安全性考虑

  1. 哈希验证:确保目标文件未被篡改
  2. 备份机制:提供安全的回滚选项
  3. 版本检测:避免不兼容的补丁应用
  4. 权限控制:需要管理员权限运行,确保文件访问安全

技术挑战与解决方案

版本碎片化问题

微信和QQ频繁更新导致版本碎片化严重。解决方案是建立详细的版本数据库,支持从旧版本到最新版本的连续补丁链。

二进制差异处理

不同编译环境可能产生微小的二进制差异。工具使用模糊匹配算法,支持通配符(0x3F)匹配任意字节,提高匹配成功率。

性能优化

对大文件(如WeChatWin.dll超过100MB)进行二进制搜索需要高效算法。Boyer-Moore算法将搜索复杂度从O(n*m)优化到O(n/m),显著提升性能。

总结与展望

RevokeMsgPatcher展示了逆向工程和二进制补丁技术的实际应用,为Windows平台即时通讯软件的定制化修改提供了完整解决方案。通过模块化架构、版本兼容性管理和安全的补丁机制,该项目在技术深度和工程实践上都达到了较高水平。

RevokeMsgPatcher图形化界面,支持微信、QQ、TIM的防撤回和多开功能

对于技术爱好者而言,该项目不仅是实用的工具,更是学习逆向工程、二进制分析和Windows平台开发的优秀案例。通过分析其源码和实现原理,可以深入理解现代软件保护机制和相应的绕过技术。

随着即时通讯软件安全机制的不断加强,防撤回技术也需要持续演进。未来的发展方向可能包括更智能的模式识别、云端补丁数据库同步以及对新架构(如ARM64)的支持。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/2 23:38:59

别再只删.vscode-server了!VSCode远程连接报错glibc问题的完整排查清单

别再只删.vscode-server了&#xff01;VSCode远程连接报错glibc问题的完整排查清单 当VSCode远程连接服务器时突然弹出"glibc版本不满足要求"的红色警告&#xff0c;大多数开发者会条件反射地删除 .vscode-server 文件夹——这就像用重启电脑解决所有问题一样&…

作者头像 李华
网站建设 2026/6/2 23:37:46

终极m3u8下载神器:5分钟掌握直播视频永久保存的完整方案

终极m3u8下载神器&#xff1a;5分钟掌握直播视频永久保存的完整方案 【免费下载链接】m3u8-downloader 一个M3U8 视频下载(M3U8 downloader)工具。跨平台: 提供windows、linux、mac三大平台可执行文件,方便直接使用。 项目地址: https://gitcode.com/gh_mirrors/m3u8d/m3u8-…

作者头像 李华
网站建设 2026/6/2 23:35:52

2026年视频转文字完全教程|手把手教你快速提取视频文字

会议录音一小时&#xff0c;听完要两小时&#xff1f;视频字幕逐句敲到手指疼&#xff1f;学习视频跟不上速度&#xff0c;来不及记笔记&#xff1f;别担心&#xff0c;你需要的不是更快的手指&#xff0c;而是一个趁手的视频转文字工具。本文汇总了2026年最实用的视频转文字方…

作者头像 李华
网站建设 2026/6/2 23:33:10

IT 圈大实话!卷运维不如卷网络安全(2026 转行必看)

前言 在刚刚过去的金三银四&#xff0c;我进行了多场网络安全的技术面试&#xff0c;我发现最近很多从事运维的选择了辞职&#xff0c;转行到了网络安全这个发展路线。 说实话&#xff0c;运维工程师这个岗位在IT行业里面确实是处于最底层的&#xff0c;不管什么环节出现问题…

作者头像 李华