微信防撤回 for macOS
一个面向普通用户的 macOS 微信 4 工具:保留被撤回的消息,也支持自定义提示、微信多开、屏蔽自动更新和一键还原。
使用前先看
> - 目前仅支持 Apple Silicon(M 系列)Mac。
- 安装前请先完全退出微信。
- 工具会修改微信 App,但每次安装都会自动保留备份,可以随时还原。
- 如果微信升级后防撤回消失,通常重新检测并安装一次即可。
- 支持 微信 4.1.15.20(270100) 与 4.1.15.10(270090)。270090 已实测确认防撤回和自动领取红包可用;270100 已完成静态地址核对。
- 已修复运行组件早于微信核心库加载时的启动闪退。已安装旧组件的用户需使用新版工具重新安装,单独更新补丁数据不会修复。
它能做什么
| 你想要的效果 | 对应功能 | | --- | --- | | 别人撤回后,消息仍留在聊天里 | 静默防撤回 | | 显示“谁在什么时候撤回了什么” | 自定义提示 | | 避免微信自动升级后覆盖补丁 | 屏蔽自动更新 | | 同时登录多个微信账号 | 微信多开 | | 自动领取新收到的普通红包 | 自动红包(269624 / 269628 / 270090 / 270100) | | 回到修改前的原版微信 | 恢复 / 卸载 |
普通用户只需要使用图形界面,不需要打开终端,也不需要理解补丁地址或构建参数。
3 分钟完成安装
1. 下载 App
打开 Releases,下载最新的 .dmg,然后把「微信防撤回」拖进「应用程序」。
2. 第一次打开
在「应用程序」中找到「微信防撤回」,右键 → 打开 → 再次确认打开。
如果直接双击后提示无法验证开发者,使用上面的右键打开方式即可。
3. 退出微信
安装补丁前,需要完全退出微信:
- 在 Dock 中右键微信图标。
- 选择「退出」。
- 确认工具左下角显示 “微信已退出”。
4. 检测当前版本
打开「微信防撤回」后,首页会自动显示:
- 当前微信版本和构建号;
- 这个版本是否受支持;
- 防撤回是否已经开启。
5. 开启防撤回
在首页点击 「开启防撤回」,按提示完成授权。安装成功后重新打开微信。
第一次使用时,建议让另一个账号发一条测试消息再撤回,确认原消息仍然保留。
我应该选择哪种模式
静默防撤回(推荐)
别人撤回消息后,原消息继续保留,不额外显示提示。适合只想安静保留消息的用户。
操作路径:首页 → 开启防撤回。
自定义撤回提示
可以把微信原来的撤回提示替换成自己的文字,例如:
已拦截 {from} 于 {time} 撤回:{content}
支持的占位符:
| 占位符 | 显示内容 |
| --- | --- |
| {from} | 撤回消息的发送者 |
| {time} | 撤回时间,例如 23:18 |
| {content} | 文字内容,或 [图片]、[视频]、[语音] 等类型提示 |
设置方法:
- 打开 「自定义提示」。
- 输入短语并查看预览。
- 首次使用时点击「保存并开启自定义提示」。
- 以后修改短语只需点击「保存并应用」,不会重复签名微信。
- 完全退出并重新打开微信。
如果页面提示无权读取已保存的短语,按页面按钮为本 App 开启「完全磁盘访问」,然后退出并重新打开本 App。
{content} 的完整内容预览目前只在构建号 269340、269341、269574、269575、269576、269577、269578、269579、269619、269624、269628、270090、270100 上启用,并且只能读取本次微信启动后收到的消息。其他情况会自动省略内容,不会显示多余的冒号或空白。
屏蔽自动更新
微信升级通常会覆盖已经安装的补丁。可以在「高级安装」中同时打开 “屏蔽自动更新”。
如果你希望继续正常接收微信更新,就不要开启这个选项;微信升级后重新安装防撤回即可。
微信多开
打开 「微信多开」,选择副本数量后点击「创建多开副本」。工具会在「应用程序」中创建 WeChat 1、WeChat 2 等独立 App。
- 每个副本通常需要单独登录。
- 副本默认不会抢占微信网页链接。
- 多开不会修改原始微信,也不依赖当前微信构建号。
自动红包
支持 微信 4.1.13(269624 / 269628)及 4.1.15(270090 / 270100),默认关闭。用户已在微信 4.1.15.10(270090)实测确认普通红包自动领取可用。 270100 已完成静态地址与指纹核对;领取结果仍以微信显示为准。
打开「自动红包」,先按页面提示退出微信并安装或更新运行组件,再开启「自动领取新红包」。此功能使用自定义撤回提示模式;更新组件后需要重启微信。
此次新增构建需更新运行组件;旧组件不会因更新补丁数据自动获得红包适配。
命令行用户可直接使用下方的 CLI 安装与自动红包命令。
可设置收到红包后的等待时间。只处理开启后新收到的普通红包,跳过历史消息、自己发送和已领取的红包;每个红包只尝试一次,不自动重试失败请求。微信更新到其他构建后此功能不会调用旧地址。
协议调用链、原生对象布局和验证边界见 逆向记录。
恢复 / 卸载
每次安装前,工具都会把原文件保存在微信 App 内部。需要恢复时:
- 完全退出微信。
- 打开 「恢复 / 卸载」。
- 选择要恢复的时间。
- 点击 「还原这一次」。
- 重新打开微信。
检查更新
「检查更新」页面有两种更新:
补丁数据更新
用于支持新的微信构建号。文件很小,拉取后立即生效,不需要重新安装「微信防撤回」App。
适合以下情况:
- 微信刚刚升级;
- 首页显示“暂不支持”;
- 安装时提示补丁数据不匹配。
应用更新
用于获取新的界面、功能、修复和运行时支持。自定义提示需要适配新版微信时,通常需要更新 App 本身。
普通用户使用发布页面中的最新版即可;「从源码构建」是为开发者准备的功能。
遇到问题
「微信防撤回」打不开
在「应用程序」中找到它,使用 右键 → 打开,不要直接双击。
没有检测到微信
确认微信安装在默认位置:
/Applications/WeChat.app
目前图形界面默认检测这个位置。
当前微信版本暂不支持
打开 「检查更新」→「拉取最新补丁数据」。更新后仍不支持,说明这个微信构建号还在适配中。
反馈问题时请附上首页显示的:
- 微信版本;
- 构建号;
- macOS 版本;
- 操作日志中最后几行错误。
安装时提示没有权限或 Operation not permitted
打开:
系统设置 → 隐私与安全性 → App 管理
允许「微信防撤回」修改其他 App。如果仍然失败,再到:
系统设置 → 隐私与安全性 → 完全磁盘访问权限
添加「微信防撤回」,打开开关后退出并重新打开工具再试。
安装后微信点了没反应
CLI 会在修改签名前自动保存微信主程序、Helper 和扩展的 entitlements,重签名后逐项比对;如果麦克风、摄像头、网络、沙盒或扩展权限有任何一项丢失,安装会直接报错而不会把签名步骤标记为成功。
重新签名仍然是 ad-hoc 签名,原厂的 Developer ID 身份会改变。新版 macOS 仍可能阻止重新签名后的微信访问自己的数据目录。处理方法:
- 打开 系统设置 → 隐私与安全性 → 完全磁盘访问权限。
- 点击
+,添加/Applications/WeChat.app。 - 打开微信旁边的开关。
- 重新打开微信。
− 删除,再重新添加。微信升级或重新安装补丁后,偶尔需要再做一次。
安装时提示微信仍在运行
先完全退出微信再安装或恢复。不要在微信运行时修改程序文件,否则系统可能直接关闭微信进程。
微信升级后防撤回消失
这是正常现象,微信升级会替换已经修改的文件:
- 打开「微信防撤回」。
- 拉取最新补丁数据。
- 确认新构建号已受支持。
- 退出微信并重新安装。
安装成功,但真实撤回没有生效
先确认:
- 微信已经完全退出并重新打开;
- 测试的是别人撤回的消息;
- 当前构建号与首页显示一致;
- 没有在安装后又升级微信。
常见问题
会上传聊天内容吗?
撤回内容匹配在微信进程本地完成,缓存只存在于当前进程。调试探针默认关闭;开启后会把撤回 XML 和相关元数据写入本机 macOS Console。
会影响我自己撤回消息吗?
自定义提示只处理别人撤回的消息。你自己撤回时仍使用微信原来的提示。
需要关闭 SIP 吗?
不需要。工具只修改「应用程序」中的微信,不修改 macOS 系统文件。
支持 Intel Mac 吗?
当前发布的 GUI 只支持 Apple Silicon(M 系列)Mac。
如何查看详细操作过程?
点击窗口底部的 「查看详情」,可以看到检测、安装、签名和恢复日志。
查看当前支持的微信构建号
工具按微信的内部构建号精确匹配。你不需要手动查找,GUI 首页会自动检测。
| 微信版本 | 构建号 | 静默防撤回 | 自定义提示 | {content} 内容预览 | 屏蔽自动更新 | 历史多开补丁 |
| --- | --- | :---: | :---: | :---: | :---: | :---: |
| 较早构建 | 268575 | ✅ | — | — | ✅ | ✅ |
| 较早构建 | 268596 | ✅ | — | — | ✅ | — |
| 较早构建 | 268597 | ✅ | ✅ | — | ✅ | — |
| 较早构建 | 268599 | ✅ | ✅ | — | ✅ | — |
| 较早构建 | 268601 | ✅ | ✅ | — | ✅ | — |
| 较早构建 | 268602 | ✅ | ✅ | — | ✅ | — |
| 较早构建 | 268831 | ✅ | ✅ | — | — | — |
| 4.1.10 | 268849 | ✅ | ✅ | — | ✅ | — |
| 4.1.10 | 268850 | ✅ | ✅ | — | ✅ | — |
| 4.1.10 | 268851 | ✅ | ✅ | — | ✅ | — |
| 4.1.11 | 269077 | ✅ | ✅ | — | ✅ | — |
| 4.1.11 | 269079 | ✅ | ✅ | — | ✅ | — |
| 4.1.11 | 269110 | ✅ | ✅ | — | ✅ | — |
| 4.1.12 | 269332 | ✅ | ✅ | — | ✅ | — |
| 4.1.12 | 269333 | ✅ | ✅ | — | ✅ | — |
| 4.1.12 | 269334 | ✅ | ✅ | — | ✅ | — |
| 4.1.12 | 269338 | ✅ | ✅ | — | ✅ | — |
| 4.1.12 | 269340 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.12 | 269341 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.13 | 269574 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.13 | 269575 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.13 | 269576 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.13 | 269577 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.13 | 269578 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.13 | 269579 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.13 | 269619 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.13 | 269624 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.13 | 269628 | ✅ | ✅ | ✅ | ✅ | — |
| 4.1.15 | 270090 | 支持 | 支持 | 支持 | 支持 | — |
| 4.1.15 | 270100 | 支持 | 支持 | 支持 | 支持 | — |
说明:
- ✅ 表示该构建号支持;
—表示暂未支持。 {content}内容预览包括文字原文以及[图片]、[视频]、[语音]等媒体类型。- 表中的“历史多开补丁”是旧式原地多开方式;GUI「微信多开」使用独立副本,不依赖构建号,所有版本都能使用。
进阶用户:命令行
进阶用户命令行
以下命令在仓库根目录执行,通过 swift run 运行 CLI,无需打包图形 App,也不依赖 dist 目录。
构建
swift build -c release --product WeChatAntiRecallRuntime
WXAR_RUNTIME="$(swift build -c release --show-bin-path)/libWeChatAntiRecallRuntime.dylib"
要求 macOS 12+、Swift 5.9+。
swift run -c release wechat-antirecall 会按需构建 CLI。运行组件路径通过 --show-bin-path 获取,不硬编码 SwiftPM 输出目录。安装前先完全退出微信;以下命令以普通用户运行。若系统拒绝访问微信设置,请为执行命令的终端(如 Terminal、iTerm 或 Warp)开启「完全磁盘访问」,退出并重新打开终端后重试。不要用 sudo 运行红包或提示设置命令,否则可能写入 root 用户的配置;sudo 也不能绕过 macOS 隐私权限。
查看版本和支持状态
swift run -c release wechat-antirecall versions --app /Applications/WeChat.app --config ./patches.json
只检查,不修改
swift run -c release wechat-antirecall install --dry-run --app /Applications/WeChat.app --config ./patches.json
安装静默防撤回
swift run -c release wechat-antirecall install --app /Applications/WeChat.app --config ./patches.json
安装自定义提示并屏蔽更新
swift run -c release wechat-antirecall tip-phrase set "已拦截 {from} 于 {time} 撤回:{content}" --app /Applications/WeChat.app
swift run -c release wechat-antirecall install \
--runtime-tip \
--runtime-dylib "$WXAR_RUNTIME" \
--config ./patches.json \
--block-update \
--app /Applications/WeChat.app
创建多开副本
swift run -c release wechat-antirecall clone \
--count 2 \
--output-dir /Applications \
--app /Applications/WeChat.app
自动红包设置
先完全退出微信。以下命令可独立执行:构建组件、安装防撤回与红包运行组件,然后开启自动红包。步骤通过 && 串联,安装失败就不会继续开启。安装会自动备份并重新签名微信;不屏蔽更新,不改变自定义提示短语。
swift build -c release --product WeChatAntiRecallRuntime && \
swift run -c release wechat-antirecall install \
--app /Applications/WeChat.app \
--config ./patches.json \
--runtime-tip \
--runtime-dylib "$(swift build -c release --show-bin-path)/libWeChatAntiRecallRuntime.dylib" && \
swift run -c release wechat-antirecall red-packet on \
--app /Applications/WeChat.app --delay-ms 500 && \
swift run -c release wechat-antirecall red-packet get \
--app /Applications/WeChat.app --json
最后的 JSON 应显示 settings.enabled: true、supported: true、runtimeAvailable: true,然后重新打开微信。此开关会自动发起普通红包的领取请求;实际领取结果以微信显示为准。--delay-ms 可设为 0–5000,省略时保留当前等待时间,初始值为 500 毫秒。安装成功但设置写入失败时,先解决终端的完全磁盘访问权限,再单独重试上面的 red-packet on 和 get;不要重置微信配置。
查看设置和运行组件是否包含此功能:
swift run -c release wechat-antirecall red-packet get --app /Applications/WeChat.app --json
关闭自动红包:
swift run -c release wechat-antirecall red-packet off --app /Applications/WeChat.app
red-packet 设置命令使用普通用户权限;支持 --app 指定目标微信。目前仅适配构建 269624、269628、270090 与 270100。get 显示配置和组件检测结果。
从备份恢复
swift run -c release wechat-antirecall restore \
--binary Contents/Resources/wechat.dylib \
--backup /Applications/WeChat.app/Contents/Resources/wechat.dylib.wechat-antirecall-backup-YYYYMMDD-HHMMSS \
--app /Applications/WeChat.app
完整参数:
swift run -c release wechat-antirecall help
开发者:从源码构建图形界面
bash Scripts/make-icon.sh
bash Scripts/make-app.sh
open dist/WeChatAntiRecall.app
底层实现、补丁配置、逆向记录、新构建适配方法和发布流程见 MAINTAINING.md。
相关项目
友链
- linux.do —— 新的理想型社区