Skip to content

SSL_get_fd(C 原型) ​

🔌 从 SSL 对象拿到底层 socket 文件描述符。

C 原型 ​

c
#include <openssl/ssl.h>

int SSL_get_fd(const SSL *ssl);
// 返回 fd,-1 表示无

r0capture 的用法 ​

javascript
// initializeGlobals 里包装
SSL_get_fd = new NativeFunction(addresses["SSL_get_fd"], "int", ["pointer"]);

// getPortsAndAddresses 里调用
var fd = SSL_get_fd(args[0]);  // args[0] 是 ssl 指针
var addr = Socket.localAddress(fd);

用途 ​

从 ssl 对象拿 fd,再用 Frida 的 Socket API 查地址端口。

缺失时的降级 ​

个别 ROM 缺 SSL_get_fd 导出,initializeGlobals 置 0 并用 return_zero 桩:

javascript
if (addresses["SSL_get_fd"] == 0) {
  SSL_get_fd = return_zero;  // 永远返回 0
}

此时 SSL_get_fd(ssl) 返回 0,getPortsAndAddresses(0, ...) 走降级分支,地址置 0。详见 return_zero 与 pcap 里地址是 0.0.0.0。

相关文档 ​

基于 VitePress 构建 · 教学用途