本次发布包含不少令人兴奋的内容。让我们直接开始吧。

访问 FPU/向量寄存器

对于在 32 位和 64 位 ARM 上使用 Frida 的用户来说,这里有个好消息。到目前为止, 我们只公开了 CPU 的整数寄存器;从这个版本开始,FPU/向量寄存器也可以使用了!🎉

对于 32 位 ARM,这意味着 q0 到 q15、d0 到 d31,以及 s0 到 s31。 对于 64 位 ARM,则是 q0 到 q31、d0 到 d31,以及 s0 到 s31。 如果从 JavaScript 访问这些寄存器,向量属性使用 ArrayBuffer 表示,其他寄存器则使用 number 类型。

Java.backtrace()

现有的 Java.backtrace() API 现在会在返回的 frames 中提供两个新属性: 其中还会公开 methodFlags 和 origin。

质量

我终于堵住了 RPC 服务器端代码中的一个内存泄漏。这个问题是我在 15.1.10 中实现 Vala 编译器针对 DBus 回复处理的代码生成优化时引入的。 感谢 @rev1si0n 报告并协助定位这一回归!

结束

本次发布还包含其他一些好东西,请务必查看下面的变更日志。

尽情享用吧!

变更日志

  • vala:堵住服务器端 GDBus 回复处理中的泄漏。这影响了 Frida 中所有服务器端实现。
  • glib:禁用对“charset.alias”的支持。这意味着我们不再尝试打开此文件;在 iOS 等某些系统上, 打开它可能导致违反沙箱规则。
  • java:(android) 向 Java.backtrace() 帧添加 methodFlags。
  • java:(android) 向 Java.backtrace() 帧添加 origin。
  • java:(android) 阻止 ART 编译被替换的方法。感谢 @s1341 找到解决办法!
  • cpu-context:添加 ARM FPU/向量寄存器和 NZCV。
  • cpu-features:添加 VFPD32 标志及检测逻辑。
  • stalker:修复 arm 后端中的 VFP D32 检测。
  • gumjs:向 arm_reg 绑定添加向量寄存器。
  • x86-writer:添加 put_fx{save,rstor}_reg_ptr()。
  • arm-writer:添加不带偏移量的加载/存储变体。
  • arm-writer:添加 put_v{push,pop}_range()。
  • arm-writer:从 put_ands_reg_reg_imm() 中移除空操作检查。
  • arm-writer:将 *_registers() 重命名为 *_regs()。
  • arm-writer:支持使用 Q 寄存器进行向量压栈/出栈。
  • thumb-writer:添加 put_v{push,pop}_range()。
  • thumb-writer:支持使用 Q 寄存器进行向量压栈/出栈。
  • arm64-writer:添加不带偏移量的加载/存储变体。
  • arm64-writer:添加 put_mov_{reg_nzcv,nzcv_reg}()。
  • libc-shim:支持 Linux/ARM 上的旧系统头文件。
  • node:升级依赖项。
  • node:发布 Electron 19 而不是 18 的预构建版本。