为什么 Hook SSL_read/write
🎯 r0capture 选择在 SSL_read/SSL_write 层 hook 的设计原理。
抓 HTTPS 明文的三条路
三方案对比
| 方案 | 原理 | 致命问题 |
|---|---|---|
| 私钥解密 | 用服务器私钥解 TLS | TLS 1.3 前向安全,私钥也解不了 |
| 中间人代理 | 伪造 CA 证书做 MITM | 受 Pinning 阻挡,需绕过 |
| SSL hook | 在加解密出入口拿明文 | 无(不依赖私钥/不做 MITM) |
为什么 SSL hook 最优
1. 不依赖私钥
SSL_write 拿到的是加密前的明文,根本不需要解密,所以:
- TLS 1.2 / 1.3 都行
- 前向安全不影响
- 任何 cipher suite 都行
2. 不做中间人
r0capture 不伪造证书、不冒充服务端,所以:
- Pinning 对它无效(App 验的仍是真服务端证书)
- 不需装 CA
- 不需绕过任何校验
3. 精准
只抓"已加密/已解密的应用数据",不抓 TLS 握手密文(那些也看不懂),抓到的就是可读明文。
局限
| 局限 | 原因 |
|---|---|
| 需 root/重打包 | 要注入 frida |
| 自带 SSL 栈(Flutter) | 不走系统 SSL_read/write |
| QUIC/HTTP3 | 不走 TCP SSL |
| native 加密的应用层 | SSL 之上还有 App 自加密,r0capture 抓到的是 App 加密后的密文 |
详见 r0capture 局限性。
相关文档
- SSL_read Hook 详解
- SSL_write Hook 详解
- SSL/TLS Hook 机制
- r0capture 解决的问题(见 guide/problems.md)
- 抓包方式对比
- TLS Record