WeChatIntercept/README.md
2026-06-10 15:50:25 +08:00

5.9 KiB
Raw Blame History

WeChatIntercept

macOS 微信防撤回工具,持续更新,欢迎共建和 star。

最新版本

支持微信 4.1.x 系列,适配微信全新 C++ 架构,通过 DYLD 运行时注入实现防撤回。内置特征码自动寻址机制,应对微信动态更新。

功能

  • 对方撤回的消息保留可见,弹出 macOS 系统通知告诉你撤回的消息内容:
    • 文本消息:拦截到「张三」撤回了一条消息:你好
    • 非文本:拦截到「张三」撤回了一条消息:[图片] / [视频] / [文件] / [语音] / [红包] / ...
    • 拿不到原文时降级为:拦截到「张三」撤回了一条消息
  • 微信动态更新后自动适配(特征码搜索)

适用范围

  • macOS 微信 4.1.x 系列4.1.9 / 4.1.10 已验证,更新版本依赖运行时自动寻址)
  • Apple Siliconarm64及 Intelx86_64
  • macOS Sequoia / Sonoma / Ventura / Tahoe 等

依赖

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

  • clangXcode Command Line Tools
  • python3
  • codesign
  • lldb仅消息原文功能需要Xcode CLT 自带)

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


使用

基础安装(防撤回)

chmod +x patch.sh         # 添加可执行权限
./patch.sh                # 安装防撤回
./patch.sh --uninstall    # 卸载防撤回
./patch.sh --help         # 查看所有命令

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

可选:启用"撤回通知带原文"

完成基础安装后,安装消息监听服务,撤回通知就会带上原文(当前只支持私聊,群聊暂不支持)。

./patch.sh --monitor-install    # 安装(后台自动运行,开机自启)
./patch.sh --monitor-status     # 查看状态
./patch.sh --monitor-uninstall  # 卸载

安装后无需手动操作。微信启动时自动开始监听消息、微信关闭后自动收尾、下次启动再次跟随。

不安装也不影响防撤回主功能,撤回通知降级为不带原文。

已知限制:部分群聊消息因内部对象结构差异,可能无法缓存原文,撤回时会降级为不带原文的通知。私聊消息和大部分群聊消息可正常获取原文。

注意:需要给脚本编辑器打开通知权限!
image

调试模式(仅开发用)

./patch.sh --debug             # 不装 hook仅签名允许 lldb attach
./patch.sh --monitor           # 前台运行消息监听调试用Ctrl+C 退出)
cat /tmp/antirevoke_debug.log  # 防撤回日志
cat /tmp/wechat_monitor_daemon.log  # 监听 daemon 日志
cat /tmp/wechat_msg_cache.tsv  # 消息缓存

排查步骤

如果防撤回功能不生效:

  1. 查看运行时日志:cat /tmp/antirevoke_debug.log
  2. 关键日志:
    • [已适配] / [未适配] — build 号识别情况
    • 快速路径命中 / 特征码搜索找到 — hook 安装路径
    • hook 安装失败 — 需要更新脚本,请前往 GitHub 检查最新版本或提交 issue
  3. 提交 issue 时附带:
    • 微信版本:defaults read /Applications/WeChat.app/Contents/Info.plist CFBundleShortVersionStringCFBundleVersion
    • 调试日志:/tmp/antirevoke_debug.log

已知限制

  • 聊天框内无撤回提示:由于微信 4.x 的架构限制C++ 实现 + 符号 strip + 数据库加密),无法在聊天界面内插入系统消息。替代方案为 macOS 系统通知。

  • 撤回通知原文需 monitor 服务运行:通过 ./patch.sh --monitor-install 安装后自动后台运行。未安装时撤回通知降级为不带原文。

  • monitor 运行时微信会被 lldb attach:性能影响极小(每条消息触发约 1ms 断点回调)。如果不需要原文功能,不安装 monitor 即可。


旧版本

支持微信 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

  4. 微信版本号没变,但防撤回失效

    微信存在动态更新机制,版本号不变,但方法地址会有变化,重新运行./patch.sh即可

风险说明

  1. 微信每次升级后,地址、结构体字段、运行时行为都可能变化,补丁可能立即失效。脚本内置特征码自动寻址机制可应对函数地址变化,但无法应对函数实现/消息对象结构的根本变化。

  2. 本项目仅承诺仓库内标明的已验证版本4.1.9 / 4.1.104.1.x 系列其他 build 号通过运行时自动寻址尽力支持,但不保证 100% 兼容。

  3. 本项目仅用于技术研究与兼容性分析,请自行承担使用风险。