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(可能多实现)。