Skip to content

hook Pinning 定位详解 ​

🔍 script.js 定位 App 在哪做了 SSL Pinning 校验。

📎 源码在线查看:script.js(Pinning locator)

做什么 ​

r0capture 不绕过 Pinning(详见 SSL Pinning),但帮你找到 Pinning 代码位置,便于逆向研究。

hook 的入口 ​

javascript
// TrustManager 校验
var TM = Java.use("com.android.org.conscrypt.TrustManagerImpl");
TM.checkServerTrusted.overload(...).implementation = function (chain, ...) {
    console.log("Pinning 校验被调用:");
    console.log(Log.getStackTraceString(Throwable.$new()));
    return this.checkServerTrusted(chain, ...);
};

打印调用栈 ​

堆栈里会出现 App 自己的 Pinning 实现类(如 com.x.SecurityUtil.checkPinning),定位到代码位置。

常见 Pinning 实现位置 ​

框架Pinning 类
OkHttpCertificatePinner.check
ConscryptTrustManagerImpl.checkServerTrusted
自定义App 的 X509TrustManager 实现
Nativenative 层校验(Java hook 抓不到)

与 native Pinning 的区别 ​

Java 层 Pinning 能用 Java hook 定位;native 层 Pinning(如某些加固 App)需 native hook + 逆向。r0capture 的定位主要覆盖 Java 层。

相关文档 ​

基于 VitePress 构建 · 教学用途