Skip to content

script.js 行号导览 ​

📜 按行号区间逐段拆解 script.js(491 行)。

行号区间索引 ​

行号区间内容教学要点
1-29文件头注释总体职责与三类 hook
30"use strict"严格模式
32-45rpc.exportssetssllib RPC
47-70全局状态addresses/栈/libname
72-105uuid随机串
107-115return_zero桩函数
117-184initializeGlobals符号解析
186-209ipToNumberIP 转 uint32
211-246getPortsAndAddresses地址端口查询
248-269getSslSessionId会话 ID
271-296SSL_read hook抓响应明文
298-317SSL_write hook抓请求明文
319-329Java 块守卫Java.perform
331-352storeP12证书打包
354-386客户端证书导出 hookgetPrivateKey/getCertificateChain
388-406SSL Pinning 定位 hookFile.$init
408-455裸 TCP hooksocketWrite0/socketRead0
457-487Conscrypt 调用栈 hook版本分支

1-29:文件头 ​

详细注释了:

  • 总体职责(hook 三类函数,回传明文)
  • 三类 hook(Native SSL / Java Socket / Java KeyStore)
  • 回传消息结构(function/ssl_session_id/五元组/stack)
  • data 长度==1 的事件约定

30-45:严格模式与 RPC ​

javascript
"use strict";
rpc.exports = {
  setssllib: function (name) { libname = name; initializeGlobals(); }
};

详见 setssllib RPC。

47-70:全局状态 ​

javascript
var addresses = {};           // Native 函数地址
var SSL_get_fd = null;        // NativeFunction 包装
var SSLstackwrite = null;     // SSL 发时的 Java 栈
var SSLstackread = null;      // SSL 收时的 Java 栈
var libname = "*libssl*";     // 默认 SSL 库通配符

72-105:uuid ​

详见 uuid。

107-115:return_zero ​

详见 return_zero。

117-184:initializeGlobals ​

详见 initializeGlobals。

关键行:

  • 124-130:两组符号(SSL 组 + libc 组)
  • 138-146:零匹配处理(SSL_get_fd 允许缺)
  • 147-163:多匹配优先选 conscrypt
  • 171-181:构造 NativeFunction

186-209:ipToNumber ​

详见 ipToNumber。

关键行 207:num = num >>> 0 保证无符号。

211-246:getPortsAndAddresses ​

详见 getPortsAndAddresses。

关键行 229:方向异或逻辑 (src_dst[i] == "src") ^ isRead。

248-269:getSslSessionId ​

详见 getSslSessionId。

关键行 254-256:SSL_get_session → SSL_SESSION_get_id。

271-296:SSL_read hook ​

详见 SSL_read hook。

关键行:

  • 281-285:onEnter 记录上下文
  • 288-294:onLeave 读明文 send

298-317:SSL_write hook ​

详见 SSL_write hook。

关键行 313:onEnter 直接 send(明文现成)。

319-329:Java 块守卫 ​

javascript
if (typeof Java !== 'undefined' && Java.available) {
  Java.perform(function () { ... });
}

frida 17 下靠 bootstrap 让 typeof Java 为真。详见 Java.perform。

331-352:storeP12 ​

详见 storeP12。

354-386:客户端证书导出 hook ​

详见 客户端证书导出 hook。

关键行 364:导出路径 + uuid 随机串。

388-406:SSL Pinning 定位 hook ​

详见 SSL Pinning 定位 hook。

关键行 398:双条件过滤(cacert + checkServerTrusted)。

408-455:裸 TCP hook ​

详见 socketWrite0 与 socketRead0。

关键行 426-428:Java byte[] → Native 内存拷贝。

457-487:Conscrypt 调用栈 hook ​

详见 Conscrypt 调用栈 hook。

关键行 463:按 Java.androidVersion > 8 分支。

相关文档 ​

基于 VitePress 构建 · 教学用途