Commit a51bad4801dccebc2e841a1a6d511f8c18b91f11

Authored by yibo
1 parent ccc32c7c

docs(wechat_pad_login): Hermes 平板登录修复 skill(first-responder 诊断+no-rebuild修复+升级判据)

已装到设备 ~/.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>
wechat_pad_login/HERMES_REPAIR_SKILL.md 0 → 100644
  1 +---
  2 +name: wechat-pad-login-repair
  3 +description: 微信「平板和手机同时登录」按钮不出现/平板登录失败时的诊断与修复。触发词:平板登录、以平板登录、平板登录不了、看不到平板登录按钮、副设备登录。
  4 +version: 1.0
  5 +category: troubleshooting
  6 +---
  7 +
  8 +# 微信平板登录 修复 first-responder
  9 +
  10 +微信「以平板登录」靠 LSPosed 模块 `wechathook` 把这台 Pixel 伪装成三星平板(SM-X700) + 强制显示「平板和手机同时登录」按钮。坏了的时候按下面**先诊断再动手**。
  11 +
  12 +## 背景(根因,别搞错方向)
  13 +- 平板登录被拒 = **Pixel 机型不在微信平板白名单**(`bk.B/Q` 设备型号校验 + 服务端副设备机型校验),**跟账号「体验资格」无关**(实测同一账号伪装机型后能登)。
  14 +- 靠 4 个 hook:`hookDeviceSpoof`(伪装 Build/ro.product=SM-X700 + ro.build.characteristics=tablet)、`hookInTabletEnv`(bk.A/B→true)、`hookLoginHistoryUIInitView`/`hookLoginUIInitView`(强制按钮字段 N 可见)。**登录 UI 跑在 Tinker CL,hook 必须注册到 sTinkerCL**。
  15 +- 「平板和手机同时登录」按钮**只在 `LoginPasswordUI`**(已保存账号、头像+密码框那页)出现。
  16 +
  17 +## Step 1 — 诊断(全 root,只读,先跑)
  18 +```bash
  19 +# a) 微信在不在登录页?想要 LoginPasswordUI
  20 +su -c 'dumpsys activity activities | grep -iE "topResumedActivity"'
  21 +# b) 模块注入了吗 + 伪装生效吗 + 按钮 hook 触发了吗
  22 +L=$(su -c 'ls -t /data/adb/lspd/log/modules_*.log | head -1')
  23 +su -c "grep -a WeChatHook $L | grep -aE 'Injected into WeChat|hookDeviceSpoof:|N VISIBLE|N is null' | tail -8"
  24 +# c) 当前进程内微信认为自己是什么机型(应为 SM-X700)
  25 +su -c "grep -a 'Build.MODEL now' $L | tail -1"
  26 +```
  27 +判读:
  28 +- `Injected into WeChat` 没有 → 模块没注入(跳 Fix-1)。
  29 +- `hookDeviceSpoof: → Samsung SM-X700` 没有 → 伪装没生效(多半模块没注入,Fix-1)。
  30 +- 在 `LoginPasswordUI` 但**没有** `N VISIBLE`(哪怕有 `Hooked LoginPasswordUI.onCreate`)→ 按钮 hook 没触发(Fix-3 / 升级)。
  31 +- 有 `N VISIBLE + m4 attached` → 按钮已强制显示,按钮应该在屏幕最下方;没看到就是没在 LoginPasswordUI 页(Fix-2)。
  32 +
  33 +## Step 2 — 修复(能自己做的)
  34 +**Fix-1 模块没注入**(反复装 App/模块或重启后常见):
  35 +```bash
  36 +su -c 'svc power reboot' # 重启设备
  37 +# 起来后:
  38 +su -c 'pm install-existing com.tencent.mm' # 非破坏性重注册,不清数据不掉登录
  39 +```
  40 +**Fix-2 不在登录页**:微信要停在「已保存账号、输密码」那页(LoginPasswordUI)。退出登录 / 「切换账号·登录其他账号」进去;到了页面按钮就会被 hook 强制显示。用 `am start` 或让用户手动到该页。
  41 +
  42 +**Fix-3 在 LoginPasswordUI 但 `N VISIBLE` 不出现**:这是**代码级问题**(多半是 hook 注册在了 base CL 而登录 UI 在 Tinker CL,或微信更新后 `N`/`bk`/`LoginPasswordUI` 混淆名变了)。**别硬试,走升级**。
  43 +
  44 +## Step 3 — 升级(Case B,Hermes 修不了的)
  45 +以下要**改 wechathook 源码 + 重编译模块 + 逆向新混淆名**,Pixel 上没有当前源码(`~/WeChatHook/` 是旧 stub)、也不该盲改。发生时**收集证据交给人/Claude 会话**:
  46 +- 微信版本:`su -c 'dumpsys package com.tencent.mm | grep versionName'`
  47 +- 上面 Step-1 的日志输出(`N is null` / 有注册无触发 / 无注入 等)
  48 +- 现象截图(在哪个登录页、有没有按钮)
  49 +修复配方(4 hook + Tinker CL 坑 + 字段名 N/bk/m4 + DEX 分布)在 Mac 仓库 `wechat_pad_login/LESSONS.md` 和 memory `wechat-pad-login-device-spoof.md`。
  50 +
  51 +## 不要做
  52 +- 不要以为是「账号体验资格」问题去折腾账号——是机型白名单。
  53 +- 不要在 `~/WeChatHook/`(旧 stub) 上乱 build 覆盖线上模块——当前模块从 Mac 源码编出,盲 build 会退化。
  54 +- Fix-1 重启前确认没有正在进行的重要登录/同步。