增加特征码自动寻址机制,兼容性更强

This commit is contained in:
zhangyang131
2026-06-04 13:18:55 +08:00
parent e1047bcc8b
commit 608934165d
2 changed files with 368 additions and 38 deletions
+44 -7
View File
@@ -4,14 +4,15 @@ macOS 微信防撤回工具,持续更新,欢迎star。
## 最新版本
**支持微信 4.1.9 ~ 4.1.10**,适配微信全新 C++ 架构,通过 DYLD 运行时注入实现防撤回。
**支持微信 4.1.x 系列**,适配微信全新 C++ 架构,通过 DYLD 运行时注入实现防撤回。内置**特征码自动寻址**机制,应对微信动态更新。
### 功能
- 对方撤回的消息保留可见
- 自己撤回正常工作
- 撤回时弹出 macOS 系统通知(显示谁撤回了消息)
- 撤回时弹出 macOS 系统通知(显示谁撤回了消息,含用户昵称
- 通知开关可随时切换
- 微信动态更新后自动适配(特征码搜索)
### 原理
@@ -22,11 +23,16 @@ macOS 微信防撤回工具,持续更新,欢迎star。
通过读取当前登录用户 ID(完整字符串匹配),精确区分自己与对方。
Hook 安装采用三级查找策略:
1. **快速路径**:硬编码地址 + 完整 5 条指令特征码验证
2. **特征码搜索**:扫描 `wechat.dylib __TEXT` 段,自动定位新版本函数地址
3. **fallback**4.1.9 dispatch slot 写入
### 适用范围
- macOS 微信 4.1.9、4.1.10
- macOS 微信 4.1.x 系列(4.1.9 / 4.1.10 已验证,更新版本依赖运行时自动寻址)
- Apple Siliconarm64)及 Intelx86_64
- macOS Sequoia / Sonoma / Ventura 等(自动处理 provenance 限制)
- macOS Sequoia / Sonoma / Ventura / Tahoe 等(自动处理 provenance 限制)
### 使用
@@ -79,6 +85,37 @@ macOS 系统自带工具,无需额外安装:
cat /tmp/antirevoke_debug.log # 查看运行时日志
```
### 微信版本更新后
微信支持动态更新(无需经过 App Store),更新后 build 号变化可能导致 hook 失效。
脚本会自动应对:
1. **特征码动态搜索**:当硬编码地址失效时,自动扫描 `wechat.dylib``__TEXT` 段查找 `isRevokeMessage` 函数特征码。微信小版本更新(仅函数地址改变、实现不变)的情况下,**自动适配,无需任何操作**。
2. **大版本校验放宽**:脚本只校验 `CFBundleShortVersionString` 是否为 `4.1.x`,不再依赖精确 build 号。新 build 号(如 4.1.11)也能正常安装,运行时通过特征码自动寻址。
3. **失败提示**:如果特征码也匹配不到(微信改了实现),系统通知会弹出提示:
- `WeChatIntercept 需更新` — 微信版本号变化(如 4.1.10 → 4.1.11),需要更新脚本
- `WeChatIntercept 异常` — 已适配的 build 号但仍失败(极罕见)
4. **消息对象偏移失效**:如果 `msg+0x18` 偏移读取的 sender ID 持续出现非可打印 ASCII 内容,累计达到阈值后会弹出 `"快去催 WeChatIntercept 作者更新适配"` 通知。日常对方撤回的多次调用不会误触发。
### 排查步骤
如果防撤回功能不生效:
1. 查看运行时日志:`cat /tmp/antirevoke_debug.log`
2. 关键日志说明:
- `[已适配]` — build 号在已知列表,安装应该成功
- `[未适配]` — build 号未知,靠运行时自动寻址
- `快速路径命中` — 硬编码地址有效,正常工作
- `特征码搜索找到` — 自动找到新地址,正常工作(说明微信地址变了但实现没变)
- `hook 安装失败` — 需要更新脚本,请前往 GitHub 检查最新版本或提交 issue
3. 提交 issue 时附带:
- 微信版本:`defaults read /Applications/WeChat.app/Contents/Info.plist CFBundleShortVersionString``CFBundleVersion`
- 调试日志:`/tmp/antirevoke_debug.log`
### 已知限制
- **聊天框内无撤回提示**:由于微信 4.x 的架构限制(C++ 实现 + 符号 strip + 数据库加密),无法在聊天界面内插入系统消息。替代方案为 macOS 系统通知。
@@ -89,11 +126,11 @@ cat /tmp/antirevoke_debug.log # 查看运行时日志
### 风险说明
1.微信每次升级后,地址、结构体字段、运行时行为都可能变化,补丁可能立即失效。
1. 微信每次升级后,地址、结构体字段、运行时行为都可能变化,补丁可能立即失效。脚本内置特征码自动寻址机制可应对函数地址变化,但无法应对函数实现/消息对象结构的根本变化。
2.本项目承诺仓库内标明的支持版本,不承诺自动兼容未来版本
2. 本项目承诺仓库内标明的已验证版本(4.1.9 / 4.1.10);4.1.x 系列其他 build 号通过运行时自动寻址尽力支持,但不保证 100% 兼容
3.本项目仅用于技术研究与兼容性分析,请自行承担使用风险。
3. 本项目仅用于技术研究与兼容性分析,请自行承担使用风险。
---