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