操作模式

Frida强大的动态调试能力来自于由C编写的Gum核心。由于类似的调试逻辑会经常变化,因此大多时候你会想使用脚本语言去编写, 这样你可以获得快速的回馈。而这里就是GumJS发挥作用的地方。简单的几行C代码,你的JavaScript代码在运行时获取Gum的接口的全部能力, 这些接口可以帮助你拦截函数,枚举已加载库,已导入的导出的函数,读写内存,扫描内存等。

目录

  1. 注入
  2. 嵌入
  3. 预加载

注入

绝大多数时候,注入需要先成一个进程,然后附加到该进程上,或者在一开始生成的时候就劫持该进程,然后进一步运行你自己的调试逻辑。 这也是大多时候Frida的运行模式,所以本指南大部分都聚焦于此。frida-core会将GumJS以共享库的方式打包进应用,并提供一个双工信道 方便你与你的代码交互,如果有必要的话,之后还可以自卸载。除了这个核心功能。frida-core还可以枚举已安装应用,正在运行的进程,以及已连接的设备。 已连接的设备通常指运行frida-server的iOS或Android设备。该组件是一个必须的守护进程,用于将frida-core以TCP的方式暴露出来。 该组件默认监听localhost:27042

嵌入

有时候没办法在 注入模式下使用Frida。比如在未越狱的iOS和安卓系统上。此时我们提供一个共享库frida-gadget,该库可以嵌入到你希望调试的应用里。 你只需要加载该库,就可以与其远程交互,比如使用基于Frida的 frida-trace工具。同时该库还可提供离线运行的功能。

详情查阅这里

预加载

也许你并不熟悉LD_PRELOAD,或DYLY_INSERT_LIBRARIES? 如果有JS_PRELOAD会不会很酷呢? 前面提到的frida-gadget在加载离线自动脚本的时候非常有用。

详情查阅这里