feat(huya): turing运行中dump工程化 (R20) — 串过滤100%命中+采样集7份
- hook_str_magic.js: dfpReport/hyudbwebuif字符串过滤替代魔数(不漏轮次) + 全量请求dump - 采样集: golden+f1..f4+新身份B(0647) — 新身份头12B=旧身份一致(nonce与身份无关) - nonce块: [7cda][版本][69c9f5][计数递增][稳定段] ; 运行时路线终态(Java桥/co-located/回溯全闭) - 触发-捕获-存档 ~40s/轮 全自动; evidence/dfp_live/ 齐全
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
'use strict';
|
||||
function emit(row) { try { send(row); } catch (e) {} }
|
||||
setTimeout(() => {
|
||||
try {
|
||||
Java.perform(() => {
|
||||
const hits = [];
|
||||
Java.enumerateLoadedClasses({
|
||||
onMatch(name) {
|
||||
if (/turing|Turing|turingfd|TuringFd/.test(name)) hits.push(name);
|
||||
},
|
||||
onComplete() {
|
||||
for (const cn of hits) {
|
||||
try {
|
||||
const K = Java.use(cn);
|
||||
const ms = K.class.getDeclaredMethods();
|
||||
const sigs = [];
|
||||
for (const m of ms) {
|
||||
let ret = '?';
|
||||
try { ret = m.getReturnType().getName(); } catch (e) {}
|
||||
const pts = Array.from(m.getParameterTypes()).map(t => { try { return t.getName(); } catch (e) { return '?'; } });
|
||||
const isNative = m.isNative ? 'N' : '-';
|
||||
sigs.push(isNative + ' ' + ret + ' ' + m.getName() + '(' + pts.join(',') + ')');
|
||||
}
|
||||
emit({ event: 'turing-class', name: cn, methods: sigs.slice(0, 40) });
|
||||
} catch (e) {}
|
||||
}
|
||||
emit({ event: 'turing-count', n: hits.length });
|
||||
},
|
||||
});
|
||||
});
|
||||
} catch (e) { emit({ event: 'turing-err', msg: String(e).slice(0, 160) }); }
|
||||
}, 3500);
|
||||
Reference in New Issue
Block a user