又到了发布激动人心的新版本的时候!主要变化包括:

  • Mac 和 iOS 上不再发生内核崩溃!请在这里阅读完整故事。
  • Mac 和 iOS 注入器会手动映射 Frida 的 dylib。这意味着我们可以附加到受到严格沙箱限制的进程。
  • frida-trace、frida-repl 等 CLI 工具现在全新支持启动进程:
$ frida-trace -i 'open*' -i 'read*' /bin/cat /etc/resolv.conf
    27 ms	open$NOCANCEL()
    28 ms	read$NOCANCEL()
    28 ms	read$NOCANCEL()
    28 ms	read$NOCANCEL()
Target process terminated.
Stopping...
$
  • 改进 frida-repl 和 frida-discover 的易用性。
  • 首次调用 DeviceManager.enumerate_devices() 时表现更好,还会返回当前已连接的 iOS 设备;因此,对于需要设备已经存在的简单应用或脚本,不再需要订阅更新。
  • Python API 现在提供 frida.get_usb_device(timeout = 0) 和 frida.get_remote_device(),便于访问 iOS 设备以及远程/Android 设备。
  • 传给 Interceptor.attach() 的 onEnter 和 onLeave 回调可以访问 this.registers 来检查 CPU 寄存器,这在处理自定义调用约定时非常有用。
  • console.log() 现在会把日志写入应用端的控制台,而不是目标进程。实际上,正是这项变化促使我们提升了本次发布的主版本号。
  • 兼容 Android 5.0,但 ART 支持除外。
  • 全新支持 Android/x86。除了 Dalvik 集成之外,一切功能都可以正常工作;如果你愿意通过 pull request 帮忙修复,请联系我们!

想参与贡献吗?请查看我们的 GSoC 2015 构想页面,了解我们下一步希望前往的方向。

尽情使用吧!

凌晨 2 点更新: 最终测试遗漏了一个 iOS 问题,因此我们刚刚发布 2.0.1 来修复它。

晚上 11 点更新: 感谢大家提供的优秀反馈,我们发现了一个严重错误:在某些 iOS 设备配置下于 Windows 上使用 Frida 时会触发该问题。请升级到 2.0.2;如果遇到任何问题,请告诉我们。