Releases: zengtianli/WeChatUnrevoke
Release list
v1.0.7
防撤回与拦截自动更新改为各自独立 / Anti-recall and the update block now work independently
- 防撤回和拦截自动更新是两个独立功能:拦不住自动更新时(App Store 版由 App Store 负责更新、没有内置更新器,或这个版本的更新器暂未收录),照常开启防撤回,并在状态卡里写明原因。不再因为一项做不了就整个失败。
- 新状态「防撤回已生效(更新拦不住)」:视为已完成,不会反复要求修复,也不会在后台反复自动重打。App Store 版请在 App Store 设置里关闭自动更新;其他版本在微信更新后按提醒重新开启。
- 移除「仅开启防撤回…」按钮和对应的演示视频,完整教程改为两段。
- 包含 1.0.6 的全部内容:支持微信 4.1.15(build 270100),修复重签后签名被清掉的问题。
Anti-recall and the update block are separate features. When this WeChat build's updater cannot be blocked (the App Store edition is updated by the App Store, or the updater is not covered yet), anti-recall is still applied and the status card explains why; one missing feature no longer fails the whole action. The new "Anti-recall is on (updates not blocked)" state counts as done: no repair prompt and no background re-patching. The "Apply anti-recall only…" button and its demo video are removed. Includes everything in 1.0.6: WeChat 4.1.15 (build 270100) and the re-signing fix.
macOS 15+ · Apple Silicon + Intel app · ad-hoc signed, without Apple Developer ID signing or notarization.
v1.0.6
支持微信 4.1.15,修复 App Store 版无法开启 / WeChat 4.1.15 and App Store edition fixes
- 支持微信官网最新版 4.1.15(build 270100,Apple Silicon):防撤回与拦截自动更新均已收录,并在官方安装包副本上验证了开启、体检、签名校验和还原。
- 修复 App Store 版微信(如 build 269602)开启时报「找不到 XAppUpdateManager」而整个失败的问题:App Store 版没有微信内置的更新器,由 App Store 负责更新,现在会自动跳过这一步继续开启防撤回,详情里「拦截自动更新」显示为「不适用」。想保住补丁,请在 App Store 设置里关闭自动更新。
- 修复重新签名后清除全部扩展属性、把 4.1.15 新增文件的签名一并清掉的问题;现在只移除下载隔离标记,签名校验放在最后一步。
Adds WeChat 4.1.15 (build 270100, Apple Silicon): anti-recall and the update block, verified on a copy of the official installer (patch, diagnostics, strict signature check, restore). App Store editions such as build 269602 no longer fail with "XAppUpdateManager not found": they have no in-app updater, so that step is skipped and the update block shows as not applicable; turn off App Store automatic updates to keep the patch. Re-signing no longer clears every extended attribute, which had removed the signature of a file new in 4.1.15; only the quarantine flag is removed now, and the strict signature check runs last.
Real-chat recall on 4.1.15 and on the App Store edition still needs confirmation from users.
macOS 15+ · Apple Silicon + Intel app · ad-hoc signed, without Apple Developer ID signing or notarization.
v1.0.5
写入权限错误恢复指引 / Recovery guidance for write-permission errors
- 为开启和还原时的
wechat.dylib写入权限错误提供中英文恢复指引,包括 macOS「App 管理」授权及文件权限排查;可识别系统在保存、复制、移动、删除文件时给出的各类权限报错。 - 诊断报告保留完整原始引擎日志;成功或失败后仍重新检查真实保护状态。
- 权限失败后暂停本次运行的自动写入重试,用户处理权限后可手动重试,或退出并重开应用。
- 随包补丁库包含微信官网版 build 269631 的 Apple Silicon 支持;已有版本也可联网重开应用获取此配置。
Patch and restore permission errors now show App Management and file-permission recovery steps, including the system's save, copy, move and remove permission messages. Diagnostics preserve the original engine output, and every write still ends with a fresh check. Background writes pause after a permission denial until an explicit retry or app restart. The bundled configuration includes Apple Silicon patches for website build 269631.
The app cannot grant macOS permissions itself. This release improves recovery guidance; it does not bypass system authorization or add App Store / Intel patches for build 269631.
macOS 15+ · Apple Silicon + Intel app · ad-hoc signed, without Apple Developer ID signing or notarization.
v1.0.4
修复重签名时的状态闪错 / Stable status while signing
- 修复补丁进行中后台检查读到临时签名状态、短暂显示「签名权限掉了」的问题。
- 写入期间暂停后台状态更新,丢弃跨越写入的旧检查;成功或失败后仍无条件重新检查真实结果。
- 新增公开产品主页,直接下载安装包并查看逐步图解与真实演示视频:https://unrevoke.tianli.cyou/
Background checks no longer display transient signing states while a patch is in progress. Stale checks cannot overwrite the result; every write still ends with an unconditional engine check. The new product website provides direct downloads, step-by-step instructions and real demo videos.
macOS 15+ · Apple Silicon + Intel · ad-hoc signed, without Apple Developer ID signing or notarization.
v1.0.3
统一名称与产品展示 / A consistent product identity
- 应用显示名、安装包与下载说明统一为 WeChatUnrevoke,保留原 bundle ID 和设置。
- 主界面加入应用图标、简介和 GitHub 入口;中英文 README 补齐图标、真实截图、安装步骤、功能边界和分享素材。
- 构建从公开 Info.plist 读取名称,发行与 Homebrew 同步使用新安装包名。
- 从旧版 Unrevoke 手动升级时,请先退出旧版并将旧 app 移到废纸篓,再安装 WeChatUnrevoke.app。
The app, release archive and documentation now consistently use WeChatUnrevoke. Preferences and bundle ID remain unchanged. The native interface and bilingual README now feature the app icon, real screenshots, clearer onboarding and a reusable press kit. When upgrading manually, quit and remove the old Unrevoke.app before installing WeChatUnrevoke.app.
补丁引擎行为未变;1.0.2 的错误日志保留和「仅开启防撤回」功能继续提供。需要 macOS 15+,安装包支持 Apple Silicon 与 Intel;微信补丁覆盖以构建号及架构为准。采用 ad-hoc 签名,无 Apple Developer ID 签名或公证。
v1.0.2
修复旧微信更新拦截失败时,GUI 无法继续开启防撤回的问题。
Build 269136 的反馈中,引擎找不到 XAppUpdateManager,默认更新拦截失败,防撤回也在写入前被中止。新版新增显式「仅开启防撤回…」选项,并保留失败日志,方便继续诊断。默认仍同时拦截更新,不会自动降级。
GUI 操作(针对该问题)
- 下载下方
Unrevoke-1.0.2.zip,退出旧版 Unrevoke,将解压后的 app 替换到「应用程序」。首次打开受 Gatekeeper 拦截时,按仓库 README 的安装说明操作。 - 完全退出微信,打开新版 Unrevoke。
- 保持「保留提示(推荐)」,点击其下方的 「仅开启防撤回…」。
- 阅读并确认不拦截自动更新的提示;系统要求时输入管理员密码,等待处理完成。
- 展开「详情」,确认 防撤回:已生效 · 保留提示、签名权限:完整。更新拦截可能显示「未打」或「不适用」,总状态「只装了一半」是此模式的预期结果,不代表防撤回失败。
- 自行打开微信,用一条实际撤回的消息验证。微信更新可能清除补丁,更新后请重新检查。
不需要关闭 SIP。此版本提供仅防撤回的兼容路径,未新增 269136 的更新拦截规则。如仍失败,请复制新版诊断报告(含 app version、last engine log、last write error)。
Homebrew 用户可运行 brew update && brew upgrade --cask zengtianli/tap/wechat-unrevoke,然后按上述 GUI 步骤操作。
验证:6 项回归测试通过;在 build 269627 的隔离微信副本上实际通过 GUI 还原并执行仅防撤回,独立引擎确认防撤回已写入、更新拦截未开启、签名权限完整。没有 269136 原包/SIP 开启环境的实测结果。
English
Adds an explicit Apply anti-recall only… action for older WeChat builds whose updater does not match the blocking rules (reported on build 269136: XAppUpdateManager not found). The default still requires update blocking; fallback requires confirmation. Failed operations now retain their errors and engine logs through subsequent checks.
Replace the old app with Unrevoke-1.0.2.zip, quit WeChat, select Keep the tip (recommended), and click Apply anti-recall only…. Confirm the update risk and authorize with an administrator password if requested. After completion, check Details for Anti-recall: Applied and Entitlements: Intact, then open WeChat manually. Half applied is expected when auto-updates are not blocked. Recheck after WeChat updates, which may remove the patch. SIP does not need to be disabled.
Universal Apple Silicon / Intel build, ad-hoc signed without notarization. Six regression cases and a real GUI test on an isolated build 269627 copy passed; build 269136 and SIP-enabled operation were not directly tested.
v1.0.1 — first public build
First public build.
What it is — a one-click front end for WeChatTweak's WeChat 4.x anti-recall patch. It reads your WeChat build number itself, gives you one button, blocks WeChat's auto-updater so the patch survives, and puts the patch back on its own after an update replaces it. One-click restore returns WeChat to stock.
Covers WeChat 4.x builds 268575 → 269627 (37 builds in the patch database, including the legacy 3.8.x line). New WeChat builds are picked up from config.json on GitHub — you do not need to update this app for them.
Install
This build is ad-hoc signed, not notarized — signing it with an Apple Developer ID would tie a real developer identity to a tool that modifies another vendor's app. macOS will refuse to open it until you allow it:
# unzip, drag Unrevoke.app into /Applications, then:
xattr -dr com.apple.quarantine /Applications/Unrevoke.appOr right-click the app → Open → Open.
Building it yourself is ~1000 lines of Swift plus the engine — see the README.
Requirements
macOS 15+, Apple Silicon or Intel (universal). No SIP changes, no kernel extension, no root daemon.
Known limitation
Group chats keep the recalled message but show no "recalled a message" tip, even in keep the tip mode. The reason is in the engine README.
AGPL-3.0, inherited from sunnyyoung/WeChatTweak. The embedded engine's source is here.