这是一个快速错误修复版本,包含 @dezige131 提供的 Android 修复,以及 @hsorbo 提供的多项 Darwin 和 Gum.Memory 改进:
- android:当目标进程未映射启动映像时,容忍暂时性的 USAP 补丁未命中。
- darwin:在较新的内核上重新启用 CodeSegment。
vm_remap的OVERWRITE技巧在 iOS 17.6 及更高版本上再次有效,因此可重新启用 CodeSegment。 - memory:修复
patch_code中的挂起死锁。现在先在暂存缓冲区准备补丁,使 apply 回调能在挂起其他线程并无锁复制回原处之前自由分配内存。 - memory:提高
patch_code在并发和失败情况下的安全性。提交任何字节前先将全部目标页面设为可写;只复制已修改的字节;刷新指令缓存前将页面恢复为 RX。 - memory:把三种补丁策略提取到各自的辅助函数中,在不改变行为的情况下简化分派器。
oleavr