feat(huya): doLaunch wire 离线还原 + GUID铸币复放器原型 (huya_launch_mint.py)

- JCE 规格: LiveLaunchReq{tId,tLiveUB,bSupportDomain}/LiveUserbase{eSource,eType,tUAEx}
  LiveAppUAEx{sIMEI,sAPN,sNetType,sDeviceId,sMId}/UserId{lUid..sQIMEI}/LiveLaunchRsp{t0=sGuid}
  (classes9/11 dex writeTo 精确还原)
- 信封: UniPacket, servant=launch (@WupServant), func=doLaunch, sBuffer key=_wup_data
- tools/huya_launch_mint.py: 请求构造 + 响应解析(sGuid_candidates 递归兜底) + self-test 回环 PASS
- 传输(hyns/KiwiServant)与响应形态留待 live 实测校准; 禁设备侧活动
This commit is contained in:
yml2213
2026-08-28 18:36:47 +08:00
parent bed53a6586
commit 44109aa408
2 changed files with 380 additions and 0 deletions
+18
View File
@@ -299,3 +299,21 @@ lib 内置大量模拟器检测串(qemu_pipe / mumuvmm / genymotion / windroye
全链路用同一份虚拟 profile 保持一致性,铸币=整套身份模板随机化。
- 真机/未决项:sGuid 签发是否依赖 qimei16/36、hdid/cdid/sdid 上报(采集器还是把设备信息上报
给 dfpReport 侧),这些在 §六 的注册链实测中一并验证。
### 11.6 doLaunch wire 已离线还原(2026-08-29 续)
- **JCE struct 规格**dex writeTo 精确还原,全部位于 classes9/com/duowan/HUYA):
- `LiveLaunchReq`t0=tId(UserId) t1=tLiveUB(LiveUserbase) t2=bSupportDomain(int16)
- `LiveUserbase`t0=eSource(=2) t1=eType(=1) t2=tUAEx(LiveAppUAEx)
- `LiveAppUAEx`t1=sIMEI t2=sAPN t3=sNetType t4=sDeviceId t5=sMId
- `UserId`(classes11)t0=lUid(int64) t1=sGuid t2=sToken t3=sHuYaUA t4=sCookie
t5=iTokenType t6=sDeviceInfo t7=sQIMEI
- `LiveLaunchRsp`**t0=sGuid**(铸币目标) t1=iTime t2=vProxyList t3=eAccess t4=sClientIp
- **信封**UniPacket(同密码登录);servant=`launch``@WupServant("launch")`),func=`doLaunch`
sBuffer=map<string,bytes> 键 `_wup_data`4B 大端长度前缀。
- **工具 `tools/huya_launch_mint.py`**build_live_launch_wup(profile)→请求字节、
parse_launch_rsp(bytes)→候选 sGuid(递归解 SIMPLE_LIST 载荷)、`--self-test`(回环)/
`--dump`/`--live [url]`。默认虚拟 profile 见 DEFAULT_PROFILEmid 16hex、imei 15 位、
device_id 32hex、guid=""→服务端签发)。
- **传输待 live 实测确认**hyns/KiwiServant(a09)栈的最终 URL/头(先按 wup.huya.com 平铺,
与服务端对拍后再校准);响应 sBuffer 可能是 map<string,JceStruct> 假象(解析器已兼容
bytes/struct 两种形态,sGuid_candidates 兜底)。