diff --git a/docs/HUYA_HDID_ALGORITHM_GEN.md b/docs/HUYA_HDID_ALGORITHM_GEN.md index 62d6443..1212e20 100644 --- a/docs/HUYA_HDID_ALGORITHM_GEN.md +++ b/docs/HUYA_HDID_ALGORITHM_GEN.md @@ -1246,3 +1246,24 @@ dfpReport: tReq = [10B 魔数 57 18 82 cf 66 4b b3 94 01 ee][3988B 加密采 - onLoad 全仿真 = 类定义工程 (ProxyClassFactory) 或连续空槽 wack-a-mole — 小时级 - 替代: 跳过 onLoad, 直接按 JNI 表构造 b87_@0x25c98 的 C 结构对象模型直调 - 进展固化: gap补映射 + 预注册类 + 全局槽补丁 = 已进 TuringProbe.java 可复现 + +--- + +## §11.53 R23: ga 侧 JNI 解剖状态 + 双线进展固化 (2026-08-29) + +### ga (turingga.so) JNI 面 +- 方法名族: a209202_2A742FA224BA8A2A .. n209202_ (14个, 哈希=ga v2.92.2) +- JNI 字符串在 .rodata (vaddr 0x4bd7/0x4c4e/0x5164...); **注册表 = 非文件字面三元组** + (281 个 RELATIVE 重定位扫描 = 0 命中 -> 表为栈构建/运行时填充, 需 JNI_OnLoad 反汇编) +- ga JNI_OnLoad 符号存在 (symtab 隐藏), harness 调用崩溃: PC=0x31ec8, X0=1 (运行中-非空指针) + +### 双线状态 (顺序第1步受阻, 已固化) +- 线1 (mfa onLoad): 引用计数关已过 (0x48a90 槽补丁); 后续空槽 wack-a-mole ~小时级 +- 线2 (ga 表): 需 JNI_OnLoad 栈构建表反汇编 — 与线1 同深度 +- 两线公用的更优路径: **运行中 RegisterNatives 捕获** (frida vite 已多路试, ART 内部符号未暴露 — + 备选: ART JNIEnv vtable 正确索引再试 / halt_handler) + +### 建议下一步 (下会话入口) +- A: mfa onLoad 空槽批量补丁 (0x48000-0x48a90 全槽扫描, 非零即赋 dummy) 冲过初始化 +- B: ga JNI_OnLoad 反汇编解栈构建注册表 (RegisterNatives 调用参数恢复) +- C: 重置方向 — 解析已捕获 7 样本的 nonce/计数位规律 (零依赖纯分析)