From 652b0bbd2ce5c6927be9d746349382cec940955e Mon Sep 17 00:00:00 2001 From: yml2213 Date: Sat, 29 Aug 2026 07:14:49 +0800 Subject: [PATCH] =?UTF-8?q?docs(huya):=20R23=20=E5=8F=8C=E7=BA=BF=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=9B=BA=E5=8C=96=20-=20ga=E8=A1=A8=E6=A0=88=E6=9E=84?= =?UTF-8?q?=E5=BB=BA+onLoad=E7=A9=BA=E6=A7=BD=E9=93=BE=20=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E6=AD=A5=E4=B8=89=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/HUYA_HDID_ALGORITHM_GEN.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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/计数位规律 (零依赖纯分析)