订正旧结论:平板登录被拒根因是 **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>