Skip to content

Frida Module API ​

📦 Frida 的模块(.so/.dylib)操作 API,r0capture 用它查导出符号。

是什么 ​

Module 对应一个已加载的共享库,提供按名查导出/导入符号、基地址等。

常用方法 ​

方法用途
Module.findExportByName(modName, symName)按模块名+符号名查地址
Module.getExportByName(...)同上但找不到抛异常
Module.getBaseAddress(modName)模块基址
Module.enumerateExports(modName)列出所有导出
Module.load(path)加载 .so

findExportByName 的 null 技巧 ​

javascript
Module.findExportByName(null, "SSL_write")

第一个参数传 null:在所有已加载模块里找该符号。Frida 遍历所有模块的导出表匹配。等价于 ApiResolver 的全局查,但只取第一个。

r0capture 的使用 ​

javascript
// 定位 SSL_get_fd
var p = Module.findExportByName(null, "SSL_get_fd");
var SSL_get_fd = new NativeFunction(p, 'int', ['pointer']);

先用 findExportByName 拿地址,再用 NativeFunction 包装成可调函数。

与 ApiResolver 的取舍 ​

场景选
只知符号名,要快findExportByName(null, ...)
需要所有匹配(多实现)ApiResolver.enumerateMatches

r0capture 两者都用:findExportByName 用于 SSL_get_fd(只有一个),ApiResolver 用于 SSL_read/write(可能多实现)。

相关文档 ​

基于 VitePress 构建 · 教学用途