WeChatIntercept/README.md
zhangyang131 47e59afaed readme
2026-05-29 12:29:01 +08:00

3.3 KiB
Raw Blame History

WeChatIntercept

macOS 微信防撤回工具。

最新版本v4.1.10

支持微信 4.1.10,适配微信全新 C++ 架构,通过 DYLD 运行时注入实现防撤回,一键生效。

原理

通过注入一个运行时 hook 动态库(WeChatAntiRevoke.dylib),利用微信内建的 hook dispatch slot 机制拦截 isRevokeMessage() 函数。

适用范围

  • macOS 微信 4.1.9以上
  • Apple Siliconarm64及 Intelx86_64

使用

chmod +x patch.sh       # 添加可执行权限
./patch.sh              # 安装防撤回
./patch.sh --uninstall  # 卸载
./patch.sh --help       # 帮助

首次运行可能需要约 30 秒(自动解除系统文件保护)。

依赖

macOS 系统自带工具,无需额外安装:

  • clangXcode Command Line Tools
  • python3
  • codesign
  • tar

如未安装 Xcode Command Line Tools运行xcode-select --install

已知限制

  • 无撤回提示:当前方案仅静默保留原消息,不会在聊天窗口中显示"对方撤回了一条消息"的提示。你不会知道对方曾经尝试撤回,只能注意到消息没有消失。

  • 为什么不能像旧版那样在聊天框内显示提示?

    旧版微信 macOS3.x使用 Objective-C 构建,核心逻辑暴露为 ObjC 方法,可以通过 Method Swizzling 在运行时拦截撤回处理函数,保留原消息的同时调用微信内部的消息插入 API 写入一条提示。

    4.1.9以上的底层架构已完全不同:核心逻辑迁移到 C++ 实现(仅剩 65 个 ObjC 类,而代码段超过 90MB 均为 C++ 且符号已 strip。撤回处理不再是独立的"删除旧消息"+"插入提示"两步操作,而是将整个消息对象替换为新的视图模型。在纯二进制补丁方式下,无法构造复杂的函数调用链来插入一条新消息到聊天记录中。


旧版本

支持微信 3.7.0 及更早版本,基于 DYLD 注入 + Method Swizzling支持撤回提示和自定义前缀。

功能

  1. 防撤回(支持聊天框内拦截提示)
  2. 免认证登录
  3. 拦截提示语自定义前缀
image

微信 v3.7.0 下载

微信 v3.7.0 版本

使用方法

  • 安装cd 到 WeChatIntercept 文件夹,将 Install.sh 拖到终端,输入密码回车,重启微信。
  • 卸载:将 Uninstall.sh 拖到终端回车。
  • 自定义前缀:安装成功后重启微信,屏幕左上角微信菜单栏有个小助手菜单,修改后点击关闭即可。

常见问题

  1. 无法打开 "insert_dylib",因为无法验证开发者

    在系统安全性与隐私处点击允许。

  2. 截屏无法使用,已添加屏幕录制权限仍不行

    在系统安全性与隐私中删除微信,重新添加,重启微信即可。(感谢 Kylelkh

  3. M1 芯片怎么使用

    安装 Rosetta在微信属性中勾选"使用 Rosetta 打开"。(感谢 Mercury2699bolosea


注意

  • 微信更新后需重新运行对应版本的补丁
  • 仅供学习研究用途