本版本的主要主题是操作系统支持:我们修复了 Android 12 上的一些粗糙之处,并引入对 Android 13 的初步支持。在开发 frida-java-bridge 时,我还发现自己需要 JVM 专用后端中的一些 JVMTI 代码。这些部分现在已经共享,JVM 专用代码也更加完善,并全新支持 JDK 17。
我们还提高了多处的稳定性,并让 CodeWriter API 更容易安全使用。可移植性也得到改善:基于 QuickJS 的 JavaScript 运行时终于能在小端构建机器上交叉编译为大端目标,反之亦然。
要了解更多信息,请务必查看下方的变更日志。
祝使用愉快!
变更日志
- linux:处理 ptrace() 期间的伪信号。
- android:添加 Android 12+ 上 system_server 缺失的 SELinux 规则。
- android:修复真实设备上的 Android 13 检测。
- android:处理 Android 13 中新的链接器内部实现。
- java:改进 Java.enumerateMethods() 的错误消息。感谢 @jpstotz!
- java:(android) 处理内联的 GetOatQuickMethodHeader()。
- java:(android) 改进对非 Google Android 12+ ROM 的支持。
- java:(android) 修复 Android >= 12 上的 Java.choose()。
- java:(android) 添加 Android 13 支持。
- java:(android) 修复 x64 重编译逻辑中 threadReg 被破坏的问题。
- java:(android) 解释 Java.deoptimizeBootImage() 不可用的原因。
- java:(android) 通过 api.jvmti 公开 JVMTI。
- java:(android) 改进操作系统功能相关的错误消息。
- java:(jvm) 添加 JDK 17 的基本支持。
- java:(jvm) 为 thread_from_jni_environment() 添加后备方案。
- java:(jvm) 修复 withJvmThread() 前序/后序逻辑中的释放后使用。
- java:(jvm) 改进 InstanceKlass 偏移检测。
- code-writer:添加 flush_on_destroy 选项。
- gumjs:禁用 CodeWriter 的 flush_on_destroy 选项。这样一来,writer 在被垃圾回收时不会再向内存写入,因此使用更安全。到那时,目标内存可能已不可写,或可能已归其他代码所有。
- gumjs:必要时嵌入字节序交换后的 QuickJS 字节码。这意味着 GumJS 可以跨大小端交叉编译。
- gumjs:修复 Instruction 复制逻辑中的二次释放。
- gumjs:修复 Relocator 指令访问器。
- gumjs:在 reset() 和 dispose() 时刷新 CodeWriter。
- gumjs:改进 NativePointer#strip() 以支持 ARM TBI。
- gumjs:让 Instruction 包装器在零拷贝模式下更安全。
- gumjs:修复 QuickJS 运行时中的 Relocator 泄漏。
- quickjs:修复对字节序交换输出的支持。同时将 QuickJS 升级到最新上游版本,并包含 Unicode 14 更新。
oleavr