Skip to content

hook 数为 0(SSL 符号未找到) ​

🔍 启动时显示 hook 了 0 个 SSL 函数。

现象 ​

r0capture 启动日志会打印 hook 了多少个 SSL 符号。若显示 0,说明没找到 SSL_read/SSL_write 符号。

原因 ​

原因说明
App 还没加载 SSL 库spawn 太早,库还没 dlopen
用了自带 SSL(非系统)符号在 App 的 libssl 里
符号被 strip库没导出 SSL_read 符号
Conscrypt 新版改名不再用 SSL_read 这个名

解决 ​

1. 等 App 触发请求后再 attach ​

spawn 太早库没加载,可改用 attach(App 已发过请求后库已加载)。

2. setssllib 指定 ​

javascript
// RPC 调用指定 App 的 SSL 库
script.exports.setssllib("/data/app/.../lib/arm64/libmyssl.so")

3. 多符号匹配 ​

r0capture 用 ApiResolver 找所有匹配,按优先级 hook。若都找不到,需手动定位偏移。

4. 用 Java socket 兜底 ​

native SSL 抓不到时,Java socket hook 可作为后备。

验证符号是否存在 ​

bash
# 在设备上
adb shell
su
# 找 App 的 SSL 库
find /data/app -name "libssl*"
# 看导出符号
readelf -sW /system/lib64/libssl.so | grep SSL_read

相关文档 ​

基于 VitePress 构建 · 教学用途