setssllib RPC
🔧 设备端导出的 RPC:指定要 hook 的 SSL 库路径。
本文档与 rpc-setssllib 互为补充,后者侧重 C 原型与 RPC 调用方式,本文侧重在 script.js 中的实现与用途。
📎 源码在线查看:
script.js#L38-L49(rpc.exports)
是什么
setssllib 是 script.js 通过 rpc.exports 暴露给主机端的函数,用于运行时切换/指定 r0capture 要 hook 的 SSL 库。
为什么需要
多数 App 走系统 SSL(Conscrypt/libssl.so),r0capture 默认能 hook。但有些 App:
- 自带 libssl(打包进 APK)
- 用静态链接的 BoringSSL(如 Flutter)
- 符号被 strip,默认找不到
此时需用 setssllib 显式指定 SSL 库路径。
用法
主机端通过 frida RPC 调用:
python
script.exports.setssllib("/data/app/com.x/lib/arm64/libmyssl.so")实现要点
javascript
rpc.exports = {
setssllib: function (path) {
// 重新用 ApiResolver 在指定库找 SSL_read/write
// 重新 hook
}
};调用后 r0capture 会在新指定的库里重新解析符号并 hook。
配合 -ssllib 参数
CLI 的 -ssllib 在启动时指定;setssllib RPC 在运行中动态切换。两者最终都调到设备端的同一套符号解析逻辑。