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

  • 目标设备: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>
    yibo authored
     
    Browse File »