Skip to content

SSL Pinning(证书绑定) ​

🔒 App 把服务端证书固定在本地,仅信任该证书,绕过系统 CA。r0capture 在 hook 层之下,本身就无视 pinning。

什么是 SSL Pinning ​

正常 TLS 校验:客户端信任系统 CA 颁发的所有证书。Pinning 则更进一步:App 内置一份预期的服务端证书/公钥,握手时校验服务端证书必须完全匹配内置的那份。

为什么有 Pinning ​

防止中间人攻击:即使攻击者拿到系统 CA 信任(如装了自签根证书),App 也会因 pin 不匹配而拒绝连接,从而抵御 mitmproxy/Charles 等抓包。

r0capture 为什么无视 Pinning ​

  • Pinning 校验发生在 App 业务层(hook 点之上)
  • r0capture hook 在 SSL_read/SSL_write,拿到的是校验之后的明文
  • 即便 pinning 校验失败,App 仍可能先调 SSL_write 发出请求(取决于实现),r0capture 仍能抓到

关键

r0capture 不需要绕过 pinning 就能抓包——它根本不参与 pinning 校验。这与 mitmproxy 等「中间人」工具不同,后者必须绕过 pinning 才能解密。

r0capture 还能定位 Pinning 代码 ​

虽然不绕过,r0capture 提供 SSL Pinning 定位 hook,帮你找到 App 哪里在做 pinning,便于逆向研究。

相关文档 ​

基于 VitePress 构建 · 教学用途