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