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 |