距离上一次大版本升级已经有一段时间了。这一次,我们解决了一个长期存在的 问题:64 位整数此前被表示为 JavaScript Number 值。由于底层表示形式是 双精度浮点数,这意味着超过 53 位的值会出现问题。
Memory、NativeFunction 和 NativeCallback API 中的 64 位类型 现在会由新引入的 Int64 和 UInt64 类型正确表示,它们的 API 与 NativePointer 几乎完全一致。
现在让我们祈祷 int64/uint64 能够进入 ES7。
最后,这里汇总一下各项变更:
7.0.0:
- core:重新设计 64 位整数的处理方式
- core:提高构造函数的严格程度
- core:改进 QNX 支持
- frida-repl:更新徽标
7.0.1:
- core:修复 32 位架构上 Int64/UInt64 字段容量的问题
7.0.2:
- core:允许将 Int64 和 UInt64 原样传给所有相关 API
- core:修复 ObjC 实例上 $protocols 的处理
7.0.3:
- core:修复监听器在调用途中被销毁的竞态条件
- core:修复嵌套原生异常作用域的处理
- core:改进 QNX 支持
- frida-repl:微调启动消息
7.0.4:
- core:大幅提高 32 位 ARM 上函数 Hook 的成功率
- core:提高 64 位 ARM 上函数 Hook 的成功率
- core:修复 Interceptor 在 32 位 ARM 上暴露的 sp 值
7.0.5:
- core:生成 iOS 应用并等待 Device#resume() 时运行主 CFRunLoop, 从而可在主线程应用对线程敏感的早期插桩
7.0.6:
- core:修复 32 位 ARM 上半字对齐函数的 Hook
- core:修复 Linux 上的线程枚举
- core:为 Script 运行时添加简单的 hexdump() API
- core:使 Duktape 运行时的 CpuContext 可序列化为 JSON
7.0.7:
- core:允许向 hexdump() 传入 NativePointer
7.0.8:
- core:修复
retval.replace()对包装对象的处理 - core:修复指定大小时 Memory.readUtf8String() 的行为
- core:支持 iOS 9.1 越狱中的新 task_for_pid(0) 方法
- core:不再使用某些处理器的 ARM 模式中不可用的 cbnz
- core:为 QNX 实现 enumerate_threads() 和 modify_thread()
7.0.9:
- core:修复 FridaGadget.dylib 在 iOS 上配合 ios-deploy 以及其他 先于 CoreFoundation 加载我们的环境运行时发生的早期崩溃
- core:在 Darwin 上 frida-helper 的主线程中运行 CFRunLoop, 使系统会话脚本能够使用更多 Apple API
- core:添加用于处理 GIO 流的流式 API,目前仅通过 UnixInputStream 和 UnixOutputStream(UNIX),以及 Win32InputStream 和 Win32OutputStream(Windows)公开
7.0.10:
- core:修复存在待处理 I/O 操作时卸载脚本导致的死锁
7.0.11:
- core:FridaGadget.dylib 阻塞等待 Device#resume() 时运行主 CFRunLoop, 从而可在主线程应用对线程敏感的早期插桩
- java:修复方法类型的健全性检查
祝你使用愉快!
oleavr