如何使用 Frida 将 JavaScript 注入浏览器?

逆向工程 视窗 弗里达
2021-06-19 15:23:14

我正在学习如何使用 Frida,并想做一些基本的事情,比如将 JavaScript 注入 Windows 上的浏览​​器以列出所有正在运行的选项卡看起来它应该是可能的,因为 Frida 允许你

将 JavaScript 片段注入 Windows、Mac、Linux、iOS 和 Android 上的本机应用程序,

但几乎所有在线文章都涉及如何在 Android 或 iOS 上使用它,我还没有找到与我的场景相关的任何内容。

如果我对情况的理解不正确,请解释原因。

2个回答

你理解的情况不对。

windows.getAll() 是客户端(在本例中为 Firefox 浏览器)正在评估的 JavaScript。

使用 Frida 是将 JavaScript 代码注入 Firefox。

$ cat script.js
Interceptor.attach(Module.findExportByName(null, "PR_Write"), {
    onEnter: function (args) {
        console.log(Memory.readByteArray(args[1], args[2].toInt32() - 1));
    }
});
$ firefox &
[1] 4321
$ frida -p 4321 -l script.js
0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
00000000  33 62 2f 32 bf eb 00 00 00 03 00 00 00 03 5c 90  3b/2..........\.
00000010  f5 48 5c 90 f5 48 40 2a ec a1 5e 6a 82 e6 00 00  .H\..H@*..^j....
00000020  00 46 00 00 00 00 3a 68 74 74 70 73 3a 2f 2f 77  .F....:https://w
00000030  77 77 2e 67 73 74 61 74 69 63 2e 63 6f 6d 2f 72  ww.gstatic.com/r

您还可以手动调用函数,覆盖和拦截(在执行之前和之后注入代码)。

有很多在 Windows 上使用 Frida 的例子:

对于您的问题,Frida 背后的总体思路是相同的,无论您必须熟悉Frida API并根据您正在使用的平台编写脚本来分析挂钩函数的平台。大多数情况下,您可以使用基于 JS 的 API 来调用特定平台的本机函数。@Iddo 示例演示了它。