本次发布包含不少令人兴奋的内容。让我们直接开始吧。
访问 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 的预构建版本。
oleavr