feat(huya): AESkeyMgr钥表按id注册定案(ZMHAVPRaxJ3MtXDjduUnXAKQ为首键) + encode_aes API解码 + 朴素AES爆破证伪

- C2@26fcc8=钥表构造: id1-4 键 VA 全定位
- encode_aes(IN,KEY,OUT) → UdbAESUtil(key).encrypt: 纯自研AES(KeyExpansion/Cipher自实现)
- 24B钥×多模式×10候选明文 与 ed0db8 零命中 → 密钥必经C1加工
This commit is contained in:
yml2213
2026-08-28 23:43:40 +08:00
parent 98201f9ef6
commit 96d75462a5
+31
View File
@@ -527,3 +527,34 @@ hdid = md5(AID)/md5(MID)/md5(AID+MID)/md5(AID+CFG)/md5(AID+MID+CFG)/sha1(AID)[:3
### 下步 (unidbg 执行路线)
C2/钥表已定位 → 下一步 = unidbg 调 AESkeyMgr/C2-相关 sign/AES 函数 (hyudb_otp_encrypt@0x32fa24,
UdbAESUtil::encrypt, xxtea...) 以可控输入差分 → 复刻 32hex-HDID32 生成。
## §11.14 AESkeyMgr 钥表按 id 注册 + encode_aes API 定案 (2026-08-28 夜)
### AESkeyMgr::C2@0x26fcc8 = 钥表构造 (按 id 注册 24 字符钥)
| id | 钥 | VA |
|---|---|---|
| 1 | `ZMHAVPRaxJ3MtXDjduUnXAKQ` | 0x1c155e |
| 2 | `4VYcPdvKKqjBHZtCmbroRXHk` | 0x1bc810 |
| 3 | `xXEDWqiKLGwEZ6HubEiswCqK` | 0x1bc829 |
| 4 | `3FMHubdKosFrhmXNLHTNHZwe` | 0x1bc842 |
| (C2 前置装载) | `owNMiaCgcHmqoTr3iRamFuHj` | 0x1b898b |
| KFWAH/ybEWdv 族 | 0x1b9f27/0x1b9f40 | R2 旧线索 |
### encode_aes API (0x330218) 完全解码
```
encode_aes(IN:std::string&, KEY:std::string&, OUT:std::string&)
1. OUT.assign(常量串@0x1ba000+0xa90) ← 初始化输出
2. UdbAESUtilC1(KEY) ← 构造器吞 KEY
3. UdbAESUtil::encrypt(IN, OUT) ← 加密
```
- lib 自带完整 AES 原语: KeyExpansion@0x24ebd4, Cipher@0x24f314, MixColumns/AddRoundKey/
InvSubBytes/InvShiftRows/InvMixColumns/FFmul — **纯自研 AES (非 openssl!)**
- `UdbAESUtil::_encrypt@0x24f9f0` = 底层; `hyudb_otp_encrypt@0x32fa24` = OTP 封装
### 朴素 AES 爆破实验 (证伪)
24B 钥 × {ECB, CBC-zeroIV} × {md5(aid/mid/…), sha1, aid-bytes, cfg-b64…, 10 候选明文}
→ 与 ed0db8 零命中。**key 必经 UdbAESUtilC1 加工 (派生/置换) 或自研变异 AES**。
### 下步 (定位派生)
A. unidbg 调 encode_aes(in, key) → 输出对拍 (可控输入差分)
B. 静态读 UdbAESUtilC1/KeyExpansion(0x24ebd4) 取派生规则 → Python 复刻