Skip to content

r0capture 是什么 ​

一句话:r0capture 是一个基于 Frida 的安卓应用层抓包工具,在 SSL_read/SSL_write 这一"已解密"的层面把流量截下来,因此绕过了所有证书校验与绑定。

它在抓包链路里的位置 ​

抓 HTTPS 流量有三种思路,r0capture 选的是第三种——最省事、最通杀的一种:

  • 思路①(tcpdump/Wireshark):抓到的是 TLS 密文,看不到内容,因为有 SSL 加密。
  • 思路②(中间人代理):装个 mitmproxy,让 App 信任代理的根证书。但现代 App 几乎都做了 SSL Pinning(证书绑定),不认系统证书,代理直接失败。
  • 思路③(r0capture):直接 hook 进程内的 SSL_read / SSL_write 函数。这两个函数一边是明文、一边是密文,在它上面下钩子,拿到的就是已经解密的明文。证书校验/Pinning 都发生在这之上或之外的环节,根本不影响。

一图理解 r0capture 的工作方式 ​

关键点:明文在 App 进程内就被截走了,根本没机会变成密文再被外面的工具看到。

它由三部分组成 ​

文件角色职责
r0capture.pyPython host启动 frida、注入脚本、接收明文消息、写 pcap
script.jsFrida 注入脚本hook SSL_read/SSL_write + Java 层 Socket/KeyStore,把明文 send 回 host
myhexdump.py工具库把抓到的二进制字节渲染成可读的 hex+ASCII 三栏格式

为什么叫"通杀" ​

因为几乎所有安卓 App 的网络通信,最终都要走系统的 OpenSSL / BoringSSL 库里的 SSL_read / SSL_write 这两个函数来实际收发加密数据。不管你用 OkHttp 还是 Retrofit、不管你封装了多少层,最后一公里都是这两个函数。r0capture 就在这一公里上下钩子,所以:

  • 不用为每个网络框架写适配
  • 不用关心 App 用了什么协议(HTTP、WebSocket、FTP……只要走 SSL 就行)
  • 不用管证书校验(Pinning 在 hook 点之上,明文已经过手了)

适用范围与局限 ​

r0capture 能通杀,但不是万能。看下它的能力边界:

  • ✅ 能抓:所有走系统 SSL 栈的 App(绝大多数普通 App)
  • ⚠️ 抓得到但难解析:HTTP/2(抓到的是 h2 二进制帧,不是 GET / HTTP/1.1 文本,需配合 dissector)
  • ❌ 抓不到:WebView、小程序、Flutter——它们自带独立的 SSL 栈(静态链接 BoringSSL),符号不导出,hook 不到。详见 局限说明。

下一步:它能解决什么问题 →

基于 VitePress 构建 · 教学用途