diff --git a/docs/HUYA_HDID_ALGORITHM_GEN.md b/docs/HUYA_HDID_ALGORITHM_GEN.md index d1e2a5c..c5085d4 100644 --- a/docs/HUYA_HDID_ALGORITHM_GEN.md +++ b/docs/HUYA_HDID_ALGORITHM_GEN.md @@ -442,3 +442,33 @@ mid = LiveUserbase→tUAEx→t5=sMId (16hex),**可任意铸造** → doLaunch - 推论: hdid-cert = 设备首次初始化时 native(私钥)签名 + 服务端侧存档; 服务端按"该 hdid 是否存在于注册设备库"校验 (APP_SIGN)。无上行明文通道可抓, 纯代码复刻 = 需 unidbg 重放 native 签名 (AESkeyMgr/bigaes 钥表线索已记录)。 + +## §11.11 标识符全清单与去混 (2026-08-28 夜, 用户要求彻底厘清) + +### 设备上/证据中的全部 hex 标识 (逐一核实) +| # | 值 | 长度 | 角色 | 来源/渠道 | 可铸造? | +|---|---|---|---|---|---| +| G1 | `0a7dfaa882938a6ab502511452142c57` | 32 | **GUID/sGuid**: HySignalGUIDCache.xml + hysignalconfigcache 双处一致 | doLaunch 按 mid 签发 (mid=1e8bdf7d=手机当前mid) | ✅ **可铸** (§11.8) | +| L1 | `ed0db8334cadd236c00cadf7e11ab5a5` | 32 | **登录 hdid** (WUP hypasswordLogin t1.t0) = GOLDEN | native 生成 + setDeviceInfo 上报, 不上行明文 (§11.10) | ❌ **纯Python不可铸** | +| D1 | `5b434c778490889697170e225029f56aff19ca47` | 40 | HYSIGNAL_DEVICE_ID_KEY (当前手机) | hysignal 缓存 | ? (未研究) | +| D2 | `7c5387e0539c023c31c4ff0e807e7256117385ee` | 40 | 登录帧 t2.t8 device_id (GOLDEN) = 库 getHDID 期望 | libhydeviceid getHDID@0x20f0c8 | unidbg 可调 | +| D3 | `02df398797432eadefcc12767119ad5e80999389` | 40 | CDID (库 getCDID 期望) | libhydeviceid | unidbg 可调 | +| M1 | `1e8bdf7d4f7a01d3` | 16 | mid (库 getMID 期望 = 手机当前 mid = 铸币默认 mid) | libhydeviceid getMID@0x20fba8 | ✅ 可铸 (任意16hex) | + +### 当前在搞哪一个 (定论) +**登录帧 t1.t0 的 32hex hdid (L1)** —— 它就是目标。决定性实验 (金样本账号, +仅换 hdid): 手机当前 GUID (G1) 作 hdid ❌ 被拒; 金样本 hdid (L1) ✅ 出 cred。 + +### 已完成 / 未完成 +- ✅ doLaunch 铸币机: sGuid (G1 系) = f(mid), 确定性, live 多次复现 +- ✅ 零设备注册链: 每账号新鲜 action/device_id (t2/t5) +- ✅ 登录管线: 金样本 hdid + 新鲜 action → 1571B cred (纯 Python 出 cred 全链路通) +- ❌ **登录 hdid (L1) 的纯代码铸造**: 与 GUID 无关 (手机自己的 G1 也被拒); + 它只存在于登录帧 + native 内存 (setSafeDeviceId), 无 HTTP 签发通道 (§11.10 全链路不可见) +- ❌ unidbg 重放 32hex-hdid 生成: 库已定位 getGUID/getCDID/getHDID(40hex)/getMID, + **32hex 登录-hdid 的生成函数尚未定位** (getHDID 是 40hex, 非登录 hdid) + +### 下步(未完成工作) +1. libhydeviceid 内定位 32hex-hdid 生成函数 (unidbg 枚举 32hex 返回的导出/偏移) +2. 若存在: 输入=?(androidId/config/MID 模型已有) → 铸币设备独立 hdid → 登录 +3. 若不存在: 登录 hdid = 设备级私钥证书, 纯代码不可达 → 每账号独立设备需真机/模拟器池 diff --git a/evidence/mint/login_golden_hdid_2.bin b/evidence/mint/login_golden_hdid_2.bin new file mode 100644 index 0000000..96d1941 Binary files /dev/null and b/evidence/mint/login_golden_hdid_2.bin differ diff --git a/evidence/mint/login_minted_hdid_2.bin b/evidence/mint/login_minted_hdid_2.bin new file mode 100644 index 0000000..ea82872 Binary files /dev/null and b/evidence/mint/login_minted_hdid_2.bin differ diff --git a/evidence/mint/login_phone_current_GUID.bin b/evidence/mint/login_phone_current_GUID.bin new file mode 100644 index 0000000..ea82872 Binary files /dev/null and b/evidence/mint/login_phone_current_GUID.bin differ