将 *.dylib 或 *.so 对象加载到 Javascript V8 运行时中?

逆向工程 javascript 共享对象 弗里达
2021-06-10 23:01:01

我正在阅读这个Frida 发布页面,并注意到它做了以下参考:

除了用 C 编写整个代理之外,还可以继续构建一个本地库,并使用 Module.load() 加载它。这有效,但意味着必须为每个架构编译它,部署到目标等。

CModule 特性非常适合以 Frida 为中心的操作,但将通用共享对象加载到目标进程中会很好。CModule 似乎是为 Stalker 和相关代码中的性能优化而编写的。任何尝试做一些“额外”的事情都会导致编译时(在运行时,由嵌入式 TinyCC)错误,例如:

Compilation failed: In file included from module.c:3:\nmodule.c:3: error: include file 'dlfcn.h' not found"

^ 尝试编写一个 CModule 存根,从磁盘 dlopen'd 共享对象。

但是 Ole 在上面链接中的评论暗示这是可能的,尽管除了NodeJS C++ Addons功能之外,我找不到任何参考资料,这些功能当然是特定于 NodeJS 的。


tl;dr 如何加载一个通用对象,使其所有导出的函数都可以从 Javascript 调用?这可能吗?

1个回答

我似乎误解了原始链接中评论的上下文。我的印象是它Module.load是一个 v8-ism,而实际上它似乎是一个 Frida-API。

https://frida.re/docs/javascript-api/#module