Frida 又更新了,这次有大变化


#1

frida 发了一个大版本 12:https://frida.re/news/2018/07/12/frida-12-0-released/

本帖搬运部分内容。

  1. frida-tools

有一个显著变化是,原本 frida 的 python 库和命令行工具是一个 pypi 包,现在拆分成了如下两个:

  • frida: Python API binding
  • frida-tools: frida 命令行工具

仍然按照以前的各种教程可能会给入门者带来困惑。新版本对于移动安全测试者来说需要两个包都安装。

  1. tether 类型重命名为 usb

< 12 时 frida.get_usb_device().type 是 tether,现在返回 usb

  1. node.js 的接口变更

简化了 rpc 接口:

const api = await script.getExports();
const result = await api.add(2, 5);

现在简化为

const result = await script.exports.add(2, 5);

监听事件由原本的 script.events.listen('message', (message, data) => {}); 改为 script.message.connect((message, data) => {}),以便提供更准确的类型提示

  1. Interceptor 的改动

Interceptor 的回调函数上下文中有一个 this.context 成员,可以访问常用的寄存器状态。在之前的版本中 pc 寄存器是 frida 插桩后的实际返回地址;而现在这个接口将提供被 hook 的指令地址。

  1. Windows 下的栈回溯功能修复

frida 之前的版本在 Windows 上显示调用堆栈有问题,这是我亲身经历过的。使用 Backtracer.FUZZYBacktracer.ACCURATE 两种模式都会出现丢失栈帧或者将函数参数误认为返回地址的情况。

具体怎么个修复法还得我明天去真机上测试一番: