diff --git a/docs/HUYA_HDID_ALGORITHM_GEN.md b/docs/HUYA_HDID_ALGORITHM_GEN.md index 07dba3d..8690f86 100644 --- a/docs/HUYA_HDID_ALGORITHM_GEN.md +++ b/docs/HUYA_HDID_ALGORITHM_GEN.md @@ -1635,3 +1635,16 @@ APK 内嵌: appkey 865a..c798 (datadiv 加密 .data) ──运行时解密── 全流程定案总结移至 `docs/登录系统全流程定案.md`: 三库架构 / 常量总账 / 登录链 / dfpReport 链 / 纯协议无卡点结论 + 一号一设备方案。核心: dfpReport RC4 key = APK 内嵌常量 (datadiv@3912240), 纯协议登录链 (dfp_register → app_login) 已无设备依赖。 + +### HDID32(t1.t0) "固定与否" 终审 (2026-08-29, 证据链) +问题缘起: R14 时代结论"设备级值/服务端硬锚/纯Python不可铸"与 R15 定案"app 版本级常量"并存, +文档表述不一致。终审证据链: +1. 真机抓包 (虎牙App密码登录-WUP明文抓包.md): field1{tag0=ed0db8, tag1="13.4.22"(App版本), + tag2=SDK版本, tag5=厂商} — t1.t0 与 app 版本同结构体 +2. R15 公式逐字节复现: md5("5008_13.4.22_" + k1) = ed0db8334cadd236c00cadf7e11ab5a5 +3. k1 = datadiv 内嵌编译期常量 (R39 字符串表实测), base.apk 内 libhydeviceid.so 全用户相同 + → 公式输入 (appId, appVersion, k1) 全部为 app 版本级, 无任何设备硬件输入 +4. 实弹: 7+ 个不同虚拟设备账号用同一 ed0db8 登录全部成功 → 服务端不校验设备维度 +结论: **HDID32 对同一 App 版本的所有设备是同一固定值; 不是设备级标识; +App 版本升级时按公式重算 (k1 若随新 APK 变化则从新包 datadiv 重提取)**。 +"服务端硬锚/设备级/不可铸"均为 R14 陈旧结论, 见 HUYA_ID_NOMENCLATURE.md (已更正)。 diff --git a/docs/HUYA_ID_NOMENCLATURE.md b/docs/HUYA_ID_NOMENCLATURE.md index a03e9c8..4b9505e 100644 --- a/docs/HUYA_ID_NOMENCLATURE.md +++ b/docs/HUYA_ID_NOMENCLATURE.md @@ -9,7 +9,7 @@ | 规范名 | 长度 | 含义 | 出现位置 | 签发方 | 可铸性 | |---|---|---|---|---|---| | **GUID32** | 32hex | doLaunch 响应的 sGuid(launch 体系) | 登录外的启动注册;HySignalGUIDCache.xml | 服务端(按 MID16 确定性签发) | ✅ 已打通(铸币机) | -| **HDID32** | 32hex | 登录帧 t1.t0 的 设备证书(登录体系) | WUP 登录请求 t1.t0;native 内存 | native 私钥(libhydeviceid) | ❌ 纯 Python 不可铸 | +| **HDID32** | 32hex | 登录帧 t1.t0 的 appSign(登录体系) | WUP 登录请求 t1.t0;native 内存 | **app 版本级常量 (R15 定案)**: md5("5008_" + appVersion + "_" + k1),k1 = libhydeviceid datadiv 内嵌常量 (R39);同版本所有设备同值,随 appVersion 变化按公式重算 | ✅ 纯 Python 可算 | | **DEVID40** | 40hex | 登录帧 t2.t8 / 注册链 t5 的 device_id | WUP 登录 t2.t8、dfpReport 响应 t5、库 getHDID | 服务端(dfpReport 解密 cw 后签发)或库内生成 | ✅ 注册链可铸 | | **CDID40** | 40hex | CDID(库 getCDID) | 登录帧 fingerprint 附近 / 库内 | libhydeviceid | unidbg 可调 | | **MID16** | 16hex | mid(LiveUserbase→tUAEx→t5=sMId) | doLaunch 请求、库 getMID | 设备(可任意铸) | ✅ 任意 16hex |