Skip to content

Conscrypt ​

🏗️ Android 的 SSL/TLS 实现,App 流量实际走的 SSL 栈。

什么是 Conscrypt ​

Conscrypt 是 Google 维护的 Java SSL Provider,基于 BoringSSL,是 Android 系统默认的 SSL 实现。Android 上 javax.net.ssl.SSLSocket、HttpsURLConnection、OkHttp 等底层都走 Conscrypt。

r0capture 与 Conscrypt 的两处关联 ​

1. 符号多匹配时优先选 Conscrypt ​

initializeGlobals 枚举 SSL_read 等符号时,Android 上会同时匹配到系统 libssl 和 Conscrypt 自带的实现。r0capture优先选 com.android.conscrypt 的实现,因为 App 流量实际走它。

2. hook Conscrypt 的 SSL 流抓调用栈 ​

javascript
if (parseFloat(Java.androidVersion) > 8) {
  Java.use("com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream")
      .write...implementation = function (...) {
    SSLstackwrite = ...getStackTraceString(...);
  }
} else {
  Java.use("com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream")...
}

按 Android 版本分支 hook Conscrypt 的 SSLOutputStream/SSLInputStream,抓调用栈供 Native SSL hook 用。详见 Conscrypt 调用栈 hook。

版本分支 ​

Android 版本Conscrypt 类
> 8(9+)ConscryptFileDescriptorSocket$SSLOutputStream/SSLInputStream
≤ 8(7、8)OpenSSLSocketImpl$SSLOutputStream/SSLInputStream

相关文档 ​

基于 VitePress 构建 · 教学用途