feat(huya): unidbg encode_aes 探针上线 + 64B钥材料发现(AES变体非标)

- AesProbe.java: 直接调用 encode_aes, 权威差分源 (已知输入输出已记录)
- KeyExpansion 以16B步长读钥 → 64B材料; 标准AES对照 b1e3abcc≠ba3fb8f1 证变体
- docs §11.16
This commit is contained in:
yml2213
2026-08-29 00:01:00 +08:00
parent b62ba48db7
commit 7249dd6909
2 changed files with 163 additions and 0 deletions
+21
View File
@@ -576,3 +576,24 @@ UdbAESUtil 的盒表 @0x1c5d8e (SBOX) + @0x1c5e8e (INV-SBOX) = **标准 AES 盒*
### 下步 (决定性二选一)
A. **unidbg 调 encode_aes(IN, KEY) → OUT**: 可控输入差分, 直接对拍 ed0db8 + 反推钥/明文
B. **静态读完整 encrypt 路径** (0x24f9f0 _encrypt + Cipher@0x24f314): 明文源 + 模式 + 派生
## §11.16 unidbg encode_aes 探针上线 + 64B 钥材料发现 (2026-08-28 夜)
### tools/unidbg/hydev/src/hydev/AesProbe.java (可执行差分源!)
- 直接调 libudbauthunify_merged.so 的 encode_aes@0x330218 (IN, KEY, OUT)
- NDK-libc++ std::string ABI (short ≤22B inline / long heap) 正确读写字
- 权威输出 (已知输入):
| IN | KEY | 输出 |
|---|---|---|
| 0123456789abcdef | ZMHAVPRaxJ3MtXDjduUnXAKQ(24B) | ba3fb8f156b03a9d7db185d1254e0730 |
| 0123456789abcdef | owNMiaCgcHmqoTr3iRamFuHj | 74bd517c7e5d2bbce63c8e98a192c760 |
| 0123456789abcdef | ZMHAV…+64B-pad | (同24B) ba3fb8f1… |
| 0123456789abcdef | 64B-"0123456789…" | 72727e881edcfd0100a718687909b565 |
### KeyExpansion@0x24ebd4 关键发现
- 密钥装载 = **以 16B 步长读入** (x1[0]/x1[16]/x1[32]/x1[48] → 字) → **钥材料 64B** (非 24B!)
- 输出 = 64B (状态/扩展轮钥?) — Nk/Nr 分支在 0x24ec78-cmp#0x29
### 对比结论
标准 AES-192-ECB(同一输入+24B钥) = b1e3abcc… ≠ 原生 ba3fb8f1… — **原生 AES 变体 (64B 钥材料 + 自定义扩展)**
华生线索: 原生输出对「输入块内含 NUL 的 64B 钥」敏感 — 下一轮 = Nk 分支 + Cipher 轮结构静态定案 → Python 复刻。