HERMES_REPAIR_SKILL.md 3.92 KB

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,只读,先跑)

# 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/模块或重启后常见):

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 重启前确认没有正在进行的重要登录/同步。