一个面向普通用户的 macOS 微信 4 工具:保留被撤回的消息,也支持自定义提示、微信多开、屏蔽自动更新和一键还原。
使用前先看
- 目前仅支持 Apple Silicon(M 系列)Mac。
- 安装前请先完全退出微信。
- 工具会修改微信 App,但每次安装都会自动保留备份,可以随时还原。
- 如果微信升级后防撤回消失,通常重新检测并安装一次即可。
| 你想要的效果 | 对应功能 |
|---|---|
| 别人撤回后,消息仍留在聊天里 | 静默防撤回 |
| 显示“谁在什么时候撤回了什么” | 自定义提示 |
| 避免微信自动升级后覆盖补丁 | 屏蔽自动更新 |
| 同时登录多个微信账号 | 微信多开 |
| 回到修改前的原版微信 | 恢复 / 卸载 |
普通用户只需要使用图形界面,不需要打开终端,也不需要理解补丁地址或构建参数。
打开 Releases,下载最新的 .dmg,然后把「微信防撤回」拖进「应用程序」。
在「应用程序」中找到「微信防撤回」,右键 → 打开 → 再次确认打开。
如果直接双击后提示无法验证开发者,使用上面的右键打开方式即可。
安装补丁前,需要完全退出微信:
- 在 Dock 中右键微信图标。
- 选择「退出」。
- 确认工具左下角显示 “微信已退出”。
打开「微信防撤回」后,首页会自动显示:
- 当前微信版本和构建号;
- 这个版本是否受支持;
- 防撤回是否已经开启。
如果显示“暂不支持”,先进入 「检查更新」→「拉取最新补丁数据」,然后返回首页重新检测。
在首页点击 「开启防撤回」,按提示完成授权。安装成功后重新打开微信。
第一次使用时,建议让另一个账号发一条测试消息再撤回,确认原消息仍然保留。
别人撤回消息后,原消息继续保留,不额外显示提示。适合只想安静保留消息的用户。
操作路径:首页 → 开启防撤回。
可以把微信原来的撤回提示替换成自己的文字,例如:
已拦截 {from} 于 {time} 撤回:{content}
支持的占位符:
| 占位符 | 显示内容 |
|---|---|
{from} |
撤回消息的发送者 |
{time} |
撤回时间,例如 23:18 |
{content} |
文字内容,或 [图片]、[视频]、[语音] 等类型提示 |
设置方法:
- 打开 「自定义提示」。
- 输入短语并查看预览。
- 首次使用时点击「保存并开启自定义提示」。
- 以后修改短语只需点击「保存并应用」,不会重复签名微信。
- 完全退出并重新打开微信。
如果页面提示无权读取已保存的短语,按页面按钮为本 App 开启「完全磁盘访问」,然后退出并重新打开本 App。
{content}的完整内容预览目前只在构建号 269340、269341 上启用,并且只能读取本次微信启动后收到的消息。其他情况会自动省略内容,不会显示多余的冒号或空白。
微信升级通常会覆盖已经安装的补丁。可以在「高级安装」中同时打开 “屏蔽自动更新”。
如果你希望继续正常接收微信更新,就不要开启这个选项;微信升级后重新安装防撤回即可。
打开 「微信多开」,选择副本数量后点击「创建多开副本」。工具会在「应用程序」中创建 WeChat 1、WeChat 2 等独立 App。
- 每个副本通常需要单独登录。
- 副本默认不会抢占微信网页链接。
- 多开不会修改原始微信,也不依赖当前微信构建号。
每次安装前,工具都会把原文件保存在微信 App 内部。需要恢复时:
- 完全退出微信。
- 打开 「恢复 / 卸载」。
- 选择要恢复的时间。
- 点击 「还原这一次」。
- 重新打开微信。
恢复只会还原被修改的微信程序文件,不会删除聊天记录或账号数据。
「检查更新」页面有两种更新:
用于支持新的微信构建号。文件很小,拉取后立即生效,不需要重新安装「微信防撤回」App。
适合以下情况:
- 微信刚刚升级;
- 首页显示“暂不支持”;
- 安装时提示补丁数据不匹配。
用于获取新的界面、功能、修复和运行时支持。自定义提示需要适配新版微信时,通常需要更新 App 本身。
普通用户使用发布页面中的最新版即可;「从源码构建」是为开发者准备的功能。
在「应用程序」中找到它,使用 右键 → 打开,不要直接双击。
确认微信安装在默认位置:
/Applications/WeChat.app
目前图形界面默认检测这个位置。
打开 「检查更新」→「拉取最新补丁数据」。更新后仍不支持,说明这个微信构建号还在适配中。
反馈问题时请附上首页显示的:
- 微信版本;
- 构建号;
- macOS 版本;
- 操作日志中最后几行错误。
打开:
系统设置 → 隐私与安全性 → App 管理
允许「微信防撤回」修改其他 App。如果仍然失败,再到:
系统设置 → 隐私与安全性 → 完全磁盘访问权限
添加「微信防撤回」,打开开关后退出并重新打开工具再试。
CLI 会在修改签名前自动保存微信主程序、Helper 和扩展的 entitlements,重签名后逐项比对;如果麦克风、摄像头、网络、沙盒或扩展权限有任何一项丢失,安装会直接报错而不会把签名步骤标记为成功。
重新签名仍然是 ad-hoc 签名,原厂的 Developer ID 身份会改变。新版 macOS 仍可能阻止重新签名后的微信访问自己的数据目录。处理方法:
- 打开 系统设置 → 隐私与安全性 → 完全磁盘访问权限。
- 点击
+,添加/Applications/WeChat.app。 - 打开微信旁边的开关。
- 重新打开微信。
如果列表里已经有微信,先用 − 删除,再重新添加。微信升级或重新安装补丁后,偶尔需要再做一次。
先完全退出微信再安装或恢复。不要在微信运行时修改程序文件,否则系统可能直接关闭微信进程。
这是正常现象,微信升级会替换已经修改的文件:
- 打开「微信防撤回」。
- 拉取最新补丁数据。
- 确认新构建号已受支持。
- 退出微信并重新安装。
先确认:
- 微信已经完全退出并重新打开;
- 测试的是别人撤回的消息;
- 当前构建号与首页显示一致;
- 没有在安装后又升级微信。
然后展开底部的「查看详情」,保存最后一段日志并提交 issue。
撤回内容匹配在微信进程本地完成,缓存只存在于当前进程。调试探针默认关闭;开启后会把撤回 XML 和相关元数据写入本机 macOS Console。
自定义提示只处理别人撤回的消息。你自己撤回时仍使用微信原来的提示。
不需要。工具只修改「应用程序」中的微信,不修改 macOS 系统文件。
当前发布的 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 |
✅ | ✅ | ✅ | ✅ | — |
说明:
- ✅ 表示该构建号支持;
—表示暂未支持。 {content}内容预览包括文字原文以及[图片]、[视频]、[语音]等媒体类型。- 表中的“历史多开补丁”是旧式原地多开方式;GUI「微信多开」使用独立副本,不依赖构建号,所有版本都能使用。
进阶用户:命令行
普通用户不需要执行下面的命令。命令行适合开发、调试或自动化使用。
swift build -c release
swift test要求 macOS 12+、Swift 5.9+。
.build/release/wechat-antirecall versions --app /Applications/WeChat.app.build/release/wechat-antirecall install --dry-run --app /Applications/WeChat.appsudo .build/release/wechat-antirecall install --app /Applications/WeChat.app.build/release/wechat-antirecall tip-phrase set "已拦截 {from} 于 {time} 撤回:{content}"
sudo .build/release/wechat-antirecall install \
--runtime-tip \
--block-update \
--app /Applications/WeChat.appsudo .build/release/wechat-antirecall clone \
--count 2 \
--output-dir /Applications \
--app /Applications/WeChat.appsudo .build/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完整参数:
.build/release/wechat-antirecall help开发者:从源码构建图形界面
bash Scripts/make-icon.sh
bash Scripts/make-app.sh
open dist/WeChatAntiRecall.app底层实现、补丁配置、逆向记录、新构建适配方法和发布流程见 MAINTAINING.md。
- linux.do —— 新的理想型社区