我正在学习如何使用 Frida,并想做一些基本的事情,比如将 JavaScript 注入 Windows 上的浏览器以列出所有正在运行的选项卡。看起来它应该是可能的,因为 Frida 允许你
将 JavaScript 片段注入 Windows、Mac、Linux、iOS 和 Android 上的本机应用程序,
但几乎所有在线文章都涉及如何在 Android 或 iOS 上使用它,我还没有找到与我的场景相关的任何内容。
如果我对情况的理解不正确,请解释原因。
我正在学习如何使用 Frida,并想做一些基本的事情,比如将 JavaScript 注入 Windows 上的浏览器以列出所有正在运行的选项卡。看起来它应该是可能的,因为 Frida 允许你
将 JavaScript 片段注入 Windows、Mac、Linux、iOS 和 Android 上的本机应用程序,
但几乎所有在线文章都涉及如何在 Android 或 iOS 上使用它,我还没有找到与我的场景相关的任何内容。
如果我对情况的理解不正确,请解释原因。
你理解的情况不对。
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 示例演示了它。