-
复盘 2026-07-11 从"以为一个 hook 就完事"到"挖了四层才根治"的完整过程: Java Build.* / native __system_property_get / 系统 settings device_name / 微信自己首装存下的持久 MMKV 缓存(mmkv.default),缺一漏一处。 含无效弯路(Settings hook/分区 prop hook 零命中)、正确解(resetprop+ settings put+清 mmkv 缓存)、按账号不同现象的服务器端记录解释、维护坑。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
装到设备 ~/.hermes/skills/wechat-spoof-toggle/。对 Hermes 说「开/关平板伪装、 平板伪装状态」即翻转 flag+提醒手动重启;内置铁律=登录态下绝不替用户重启微信(=踢下线 +实名验证)。真机验证:Hermes 读 skill 正确报「关(干净 Pixel)」。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
风控踢下线+实名验证的真正根因 = 登录状态下改设备指纹(不是平板登录本身)。实证: 火星人在线时,测开关 33 秒内 Pixel→SM-X700→Pixel 翻转两次+重启两次 → 指纹横跳被踢。 修正之前「平板登录固有高风险别做」的过重判断:登录后设备身份保持稳定即可持续。 - DEVICE_SPOOF 从编译期常量改为运行时 flag 文件 /data/data/com.tencent.mm/files/.wcspoof (默认不存在=OFF=干净 Pixel,最低风控风险)。4 个 pad 登录 hook 全由该 flag 门控。 - wechat_spoof_toggle.sh: 一键翻转 flag,【绝不自动重启微信】(早期自动 force-stop 重启=登录态下身份突变=踢,已删)。改后由用户在没账号在线时手动重启微信生效,脚本大字警告。 - 部署到设备 ~/ + ~/.shortcuts/(Termux:Widget 桌面按钮)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
WeChatHook.java pad-login 注释 + LESSONS.md 加「Hermes 修复交接」段,指向 wechat-pad-login-repair skill(诊断+no-rebuild 修复+Case B 升级)。memory wechat-pad-login-device-spoof / hermes-pixel-mcp-integration 同步。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
已装到设备 ~/.hermes/skills/wechat-pad-login-repair/。Hermes 能做诊断(logs/dumpsys)+ no-rebuild 修复(reboot+install-existing/导航到 LoginPasswordUI)+ Case B(需重编译/逆向) 收集证据升级给人/Claude。Pixel Termux 有 d8/apksigner 但当前模块源码在 Mac,~/WeChatHook 是旧 stub,故 Hermes 不做重编译。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
订正旧结论:平板登录被拒根因是 **Pixel 机型不在微信平板白名单**(bk.B/Q 设备型号 校验 + 服务端副设备机型校验),**与账号「体验资格」无关**——实测同一个小火子老账号 (当初被归咎为体验资格过期那个)伪装成三星 Galaxy Tab S8(SM-X700) 后平板登录成功。 4 个 hook(缺一不可): - hookDeviceSpoof(主进程): setStaticObjectField(android.os.Build,…)=samsung/SM-X700/ gts8wifi + hook SystemProperties.get 返回 ro.product.*=同款 + ro.build.characteristics =tablet。DEVICE_SPOOF 开关。伪装仅微信进程内(getprop 仍显 Pixel)。 - hookInTabletEnv: bk.A/B→true 兜底。 - hookLoginHistoryUIInitView/hookLoginUIInitView: LoginPasswordUI/LoginHistoryUI.onCreate 强制「以平板登录」按钮(字段 N) setVisibility(VISIBLE)+挂 m4 点击。 关键 Tinker CL 坑: 登录 UI 跑在 Tinker CL,登录 hook 必须也注册到 sTinkerCL——否则 onCreate hook「注册了但 0 次触发」(N VISIBLE 计数 0),退出登录后到 LoginPasswordUI (对的页)但没按钮。加 sTinkerCL 注册后日志出 N VISIBLE + m4 attached,按钮即现。 rebuild stub 补 setStaticObjectField/getStaticObjectField。逆向+DEX 分布见 wechat_pad_login/LESSONS.md。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
目标设备:Pixel 10 Pro Fold / Android 16 / WeChat 8.0.74 - WeChatHook.java:双保险策略 1. hook bk.A()/bk.B() 返回 true(静态方法,AOT 不内联则有效) 2. hook Activity.onResume() 保底:框架跨 APK 调用无法被 WeChat AOT devirtualize,必然触发,直接强制平板按钮(LoginHistoryUI.N) VISIBLE - rebuild.sh / update_db.sh:一键编译部署脚本 - LESSONS.md:逆向过程、AOT devirtualize 坑、XposedHelpers.newInstance 子类类型陷阱等经验总结 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>