script.js 模块总览
⚙️ 设备端 Frida 注入脚本,由 r0capture.py 加载到目标 App 进程内,hook 三类关键函数。
总体职责
本脚本由 r0capture.py 通过 session.create_script() 加载到目标 App 进程中。它在进程内部 hook 三类关键函数,把「已解密的明文流量 + 上下文」经 send() 回传给 Python 端。
三类 hook
| # | hook 对象 | 层 | 作用 |
|---|---|---|---|
| 1 | SSL_read / SSL_write | Native | 抓所有走 libssl 的 HTTPS/SSL 明文(核心) |
| 2 | SocketOutputStream.socketWrite0 / SocketInputStream.socketRead0 | Java | 抓不走 SSL 的裸 TCP 明文 |
| 3 | KeyStore$PrivateKeyEntry + File.$init | Java | 导出客户端证书 + 定位证书绑定 |
| 3b | Conscrypt SSLOutputStream/SSLInputStream | Java | 为 #1 提供调用栈 |
全局状态
javascript
var addresses = {}; // 已解析的 Native 函数地址
var SSL_get_fd = null; // NativeFunction 包装
var SSL_get_session = null;
var SSL_SESSION_get_id = null;
var getpeername = null;
var getsockname = null;
var ntohs = null;
var ntohl = null;
var SSLstackwrite = null; // SSL 发时的 Java 调用栈
var SSLstackread = null; // SSL 收时的 Java 调用栈
var libname = "*libssl*"; // 默认要 hook 的 SSL 库通配符子文档
工具函数
- initializeGlobals 符号解析
- getPortsAndAddresses 地址端口查询
- getSslSessionId 会话 ID
- ipToNumber IP 转换
- uuid 随机串
- return_zero 桩函数
Hook 块
- SSL_read hook
- SSL_write hook
- storeP12 证书打包
- 客户端证书导出 hook
- SSL Pinning 定位 hook
- 裸 TCP socketWrite0 hook
- 裸 TCP socketRead0 hook
- Conscrypt 调用栈 hook