Skip to content

--selftest:自检模式 ​

✅ 主动在目标进程内发起一次 HTTPS 请求,验证抓包链路是否打通。

作用 ​

抓包不成功时,难排查是 hook 没装上还是 App 没发流量。--selftest 让 r0capture 在目标进程内自己发一个 HTTPS 请求到 https://example.com/:

  • 若 hook 链路正常 → 应抓到这次自发的 SSL_write/SSL_read
  • 若抓不到 → 说明 hook 安装有问题(frida 17 桥接、符号解析等)

用法 ​

bash
python3 r0capture.py -U -f com.app --selftest -v

输出形如:

[selftest] result={ code=200, bodylen=1256 }

code=200 说明自检请求成功发出并收到响应;若链路正常,控制台同时会打印这次请求的明文流量。

内部实现 ​

selftest 用一个独立 script 注册 RPC,避免与主 script.js 的 rpc.exports 冲突:

selftest script 内部用 java.net.URL + HttpURLConnection 发请求,会经过系统 SSL 栈,从而被主 script 的 SSL_read/SSL_write hook 抓到。

frida 17 兼容 ​

selftest script 同样内置了 _FRIDA17_BOOTSTRAP 懒加载 Java 桥接的逻辑,且其 frida:load-bridge 请求必须 post 回 st_script(而非主 script),否则桥接加载会错位。详见 frida 17 兼容。

排查指引 ​

selftest 结果含义下一步
code=200 且抓到流量链路完全正常App 没发流量?操作 App 触发请求
code=200 但抓不到流量hook 没装上查符号解析、frida 版本
err: ...自检请求失败网络?权限?Java 桥接?

相关文档 ​

基于 VitePress 构建 · 教学用途