feat(macos): 可恢复的 Apple Silicon WCDB 密钥捕获(Draft) - #103
Conversation
|
重签微信风险会不会太大了?只能算是兜底操作了,能保证100%获取吗?不然得不偿失,以及这个是否依赖特定版本?这些有测试吗? |
|
您的担心是对的。先明确结论:不能承诺 100% 获取,也不能把临时重签描述为零账号风险;它只适合作为无修改方案失败后的显式兜底,不应默认或静默执行。 关于风险这个流程不修改微信网络协议、不绕过手机确认,也不做长期注入;但捕获窗口内确实会启动一次临时调试签名的微信。因此即使时间很短,目前也没有足够规模的样本可以证明账号侧绝对无风险。现有状态机能保证的是“尽量不破坏本机微信、失败可恢复和候选密钥必须验真”,不能把它等同于“保证不触发微信风控”。 具体保护措施是:
这些措施主要降低客户端损坏、错误密钥和恢复失败的风险,并不能证明账号风控风险为零。如果合入,我建议 UI 明确标成“实验性兜底”,必须二次确认,并且始终先尝试现有无修改获取方式。 能否 100% 获取不能。失败因素包括 macOS 调试权限、LLDB/系统安全策略、登录时序、微信内部调用链变化以及活动数据库选择错误。实现采用失败关闭:抓不到就给出诊断并恢复官方微信,不会为了提高成功率猜偏移或保存未经验证的候选。 是否依赖特定微信版本分两层:
目前 Apple Silicon 实机已验证:
这说明它并非只绑定 4.1.12,但仍不能据此宣称兼容所有 4.x。Intel Mac、未来版本和其他 macOS 版本都应继续列为未验证;每次微信更新应重新记录版本、build、模块 UUID、通用断点是否命中以及恢复签名结果。 测试情况PR 内已有 48 项可复现定向测试,覆盖备份/身份校验、断点预检、PBKDF2 参数与 salt 过滤、候选数据库验真、取消/超时/异常/重启恢复及发布包审计。更新到 4.1.13 后,本地又执行了包含独立提取器在内的密钥捕获相关回归,结果为 需要区分:单元/故障注入测试可以验证恢复状态机和失败关闭逻辑,但不能证明账号风险,也不能替代每个微信版本的真实登录验收。我会把 4.1.13 的脱敏记录和兼容矩阵补到后续提交;如果维护者认为即便作为默认关闭的兜底也不可接受,也可以保留为独立实验工具,不接入正式默认流程。 |
|
大概这周内合并 |
|
已推送跟进修复 |
|
看看能不能接入到前端,类似win那种hook兜底方式,现在看起来还是全在后端 |
|
可以接入,方向可以参考 Windows Hook 兜底,但 macOS 需要保留本机权限边界。 当前已经完成的是“独立本地 GUI + 后端捕获状态机”,还没有接入 WCDA 主前端。现有流程已经覆盖环境检查、活动数据库选择、断点预检、退出登录、启动监测、重新登录、候选密钥校验以及腾讯官方版本恢复。 前端接入建议如下:
最新本地实测环境为 Apple Silicon、macOS 27.0、SIP 开启、微信 4.1.13 build 269578:第二次监测能够正常启动,重新登录时成功捕获并通过数据库校验,完成后恢复腾讯 Team ID 如果这个交互和安全边界符合项目要求,我可以把现有独立提取器状态机拆成“本机受限接口 + Nuxt/Electron 步骤页面”提交;密钥始终留在后端,不暴露给浏览器。 |
|
直接接入到主前端,方便测试 |
|
已按建议直接接入 WCDA 主前端,最新提交为 入口位于主解密页面:现有无修改 helper 仍然优先,只有在允许降级的错误下才显示“macOS 实验性实时捕获”。前端已接入 捕获接口仅允许运行 WCDA 的 Mac 本机回环连接调用,Tailscale、局域网和跨设备浏览器均无法触发。密钥通过当前账号的消息库与会话库校验后保存,并按 Windows 端现有交互填入本机前端输入框;不会写入日志、LocalStorage 或返回给远程客户端。 本地重新执行相关回归测试,结果为 |
目的
关联 #101。根据维护者关于“接入前端,类似 Windows Hook 兜底”的评审意见,本 Draft 现在同时包含可恢复的 macOS Apple Silicon WCDB 密钥捕获后端及主程序前端接线。
前端兜底边界
实现范围
/Applications/WeChat.app的 bundle identifier、腾讯 Team ID、深度签名、版本和恢复归档;0600恢复状态,成功/取消/超时/异常统一恢复腾讯原签名微信;设计和复现步骤见
docs/macos-wcdb-key-capture.md。当前验证
覆盖 helper 优先、允许/拒绝兜底错误分类、本机请求限制、分阶段 API 脱敏、互斥操作、取消/遗留恢复、完整账号验真后再缓存、前端流程与原有 macOS 捕获回归。
真实端到端记录仍按脱敏文档区分已验证版本与未验证环境;本 PR 不承诺 100% 获取、Intel Mac 或未来微信版本兼容,也不把账号风险描述为零。
已知限制