From 41a4f7b86413b694fdc4fda846d10b4ba1bb1409 Mon Sep 17 00:00:00 2001 From: jackwener Date: Fri, 15 May 2026 15:46:24 +0800 Subject: [PATCH] review (round 2): caveat empirical gap + drop emoji MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Self-review found two issues both LGTMs missed: 1. The "tier 2 仍走通" claim (README + §六) leans on §一 实测表 row "Apple 签名 + 本机 Terminal sudo = ✅". But that data only covers macOS 10.15 (Catalina) and 11.1 (Big Sur). macOS 14/15 — the exact versions where the popup behavior originates — were never tested for that path in this project. Add an explicit caveat instead of silently extrapolating across major macOS versions. 2. `init.rs` warning used a ⚠️ emoji prefix, which violates the project + global "no emojis in files unless requested" rule. README and the rest of init.rs have no emoji. Replace with `[macOS]`. --- README.md | 2 +- docs/macos-permission-guide.md | 3 ++- src/cli/init.rs | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7b1cbd9..6faeb7d 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ sudo wx init > > 重签名后 macOS 的 TCC 隐私授权按新 code signature 重新校验,旧记录会失效。如果跳过 `tccutil reset`,微信截图/视频通话/麦克风等权限可能"看起来已开启但实际拒绝"。详见 [macOS 权限与签名指南](docs/macos-permission-guide.md#五重签名后微信权限-silent-失效)。 -> **副作用提示**:完成上面的 ad-hoc 重签后,macOS 会比较频繁地弹 `"微信" 想访问其他 App 的数据`(在微信里打开公众号文章时尤其容易触发)。这是当前 macOS invasive init 路径的已知副作用:重签后 WeChat 的 code identity 变了,它再访问自己原来的 container / 缓存数据会被系统识别为"跨 App 访问"。点"允许"通常只是放行当前 WeChat 进程;想彻底不弹得恢复官方 WeChat——这只放弃**当前依赖重签的默认路径**,**不等于放弃 memory-scan**:在本机 GUI Terminal 下、Terminal.app 拿到「开发者工具」TCC 授权后,对 Apple 官方签名的 WeChat 仍可以走通;只有 SSH 远程 + Apple 签名 WeChat 这种组合才必须重签。详见 [macOS 权限与签名指南 §六](docs/macos-permission-guide.md#六微信-想访问其他-app-的数据-弹窗)。 +> **副作用提示**:完成上面的 ad-hoc 重签后,macOS 会比较频繁地弹 `"微信" 想访问其他 App 的数据`(在微信里打开公众号文章时尤其容易触发)。这是当前 macOS invasive init 路径的已知副作用:重签后 WeChat 的 code identity 变了,它再访问自己原来的 container / 缓存数据会被系统识别为"跨 App 访问"。点"允许"通常只是放行当前 WeChat 进程;想彻底不弹得恢复官方 WeChat——这只放弃**当前依赖重签的默认路径**,**不等于放弃 memory-scan**:在本机 GUI Terminal 下、Terminal.app 拿到「开发者工具」TCC 授权后,对 Apple 官方签名的 WeChat 应当仍可以走通(实证覆盖只有 Catalina / Big Sur,macOS 14+ 未在本项目内实测);只有 SSH 远程 + Apple 签名 WeChat 这种组合才必须重签。详见 [macOS 权限与签名指南 §六](docs/macos-permission-guide.md#六微信-想访问其他-app-的数据-弹窗)。 **Linux** diff --git a/docs/macos-permission-guide.md b/docs/macos-permission-guide.md index 83cd456..56ae1ed 100644 --- a/docs/macos-permission-guide.md +++ b/docs/macos-permission-guide.md @@ -313,7 +313,8 @@ codesign --force --deep --sign - /Applications/WeChat.app 彻底不弹: - 把 `/Applications/WeChat.app` 恢复成官方签名(重装官方 WeChat 包),不再执行 `codesign --force --deep --sign -` -- 这一步只是放弃**当前依赖 ad-hoc 重签的默认路径**,并不等于放弃 macOS memory-scan:在本机 GUI Terminal 下、对 Terminal.app 授予「开发者工具」TCC 权限后,`task_for_pid` 对 Apple 官方签名(hardened runtime)的 WeChat 仍能走通——参考 §一 实测表里的"Apple 签名 + 本机 Terminal sudo = ✅" +- 这一步只是放弃**当前依赖 ad-hoc 重签的默认路径**,并不等于放弃 macOS memory-scan:在本机 GUI Terminal 下、对 Terminal.app 授予「开发者工具」TCC 权限后,`task_for_pid` 对 Apple 官方签名(hardened runtime)的 WeChat 应当仍能走通——参考 §一 实测表里的"Apple 签名 + 本机 Terminal sudo = ✅" +- ⚠️ 实测覆盖范围说明:§一 实测表里 "Apple 签名 + 本机 Terminal sudo ✅" 的两条实证只覆盖 macOS 10.15 (Catalina) 与 11.1 (Big Sur);macOS 14 (Sonoma) / 15 (Sequoia) 上是否仍走通**未在本项目内实测**。如果你按这条路恢复官方签名后发现 init 走不通,请回到重签路径并接受本节描述的弹窗副作用 - 真正受限的场景是 SSH 远程 + Apple 签名 WeChat:`sshd` 拿不到 TCC 开发者工具授权,这时才必须走重签路径 长期方向: diff --git a/src/cli/init.rs b/src/cli/init.rs index adba573..5b8ce8f 100644 --- a/src/cli/init.rs +++ b/src/cli/init.rs @@ -100,7 +100,7 @@ pub fn cmd_init(force: bool) -> Result<()> { #[cfg(target_os = "macos")] { eprintln!(); - eprintln!("⚠️ macOS 副作用提示:"); + eprintln!("[macOS] 副作用提示:"); eprintln!(" 如果你是通过对 /Applications/WeChat.app 做 ad-hoc 重签来让 init 走通的,"); eprintln!(" 之后 macOS 可能弹 \"微信\" 想访问其他 App 的数据(在微信里打开公众号文章"); eprintln!(" 时尤其常见)。这是 ad-hoc 重签后 WeChat 的 code identity 变了导致的,");