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.py | Python host | 启动 frida、注入脚本、接收明文消息、写 pcap |
script.js | Frida 注入脚本 | 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 不到。详见 局限说明。
下一步:它能解决什么问题 →