Skip to content

hook Conscrypt 栈详解 ​

🛡️ script.js hook Conscrypt 相关类,捕获 SSL 栈上下文。

📎 源码在线查看:script.js(Conscrypt stack hook)

做什么 ​

Conscrypt 是 Android 主 SSL 栈。r0capture hook Conscrypt 的几个关键类/方法,用于:

  1. 捕获 SSL 上下文(session id 等)
  2. 定位实际 SSL 实现位置
  3. 兜底抓包(当 SSL_read 符号找不到时)

hook 的类 ​

javascript
// Conscrypt 的 socket 包装
Java.use("com.android.org.conscrypt.ConscryptFileDescriptorSocket");
// TrustManager(Pinning 校验常在此)
Java.use("com.android.org.conscrypt.TrustManagerImpl");
// SSLParametersImpl
Java.use("com.android.org.conscrypt.SSLParametersImpl");

TrustManagerImpl 与 Pinning ​

TrustManagerImpl.checkServerTrusted 是很多 App 做 Pinning 的入口。r0capture hook 它定位 Pinning(不是绕过)——打印调用栈看 App 在哪做了额外校验。

详见 hook-pinning-locator。

session id 获取 ​

javascript
// 从 Conscrypt socket 取 session
var session = socket.getSSLSession();
var id = session.getId();  // byte[] session id

session id 用于关联同一 TLS 会话的多个包。详见 get-ssl-session-id。

与 native SSL hook 的关系 ​

两层都 hook,互补。

相关文档 ​

基于 VitePress 构建 · 教学用途