新版本来了,正好赶上周末:
- server:添加 iOS >= 17 缺失的 entitlement。感谢 @alexhude 帮助查明这个问题。
- stalker:改进 arm 和 arm64 上的独占存储处理。我们不再可能扩展当前块、使其包含超出该块自然结束位置的指令,而是改用更安全的方法:遇到独占存储后,我们回看先前生成的块,查找其中是否有包含独占加载的块。如果找到,就将这一范围的块标记为使用独占访问。我们还会使这些块失效,以便重新编译时省略有问题的插桩。为了让自定义 transformer 也能调整生成的代码,我们引入了 StalkerIterator.get_memory_access()。感谢 @hsorbo 参与有趣且高效的结对编程!
- gumjs:添加 StalkerIterator.memoryAccess,允许自定义 transformer 在不干扰独占存储操作的情况下,确定可安全添加何种插桩。其值可设为 ‘open’,表示 callout 等“噪声较大”的插桩是安全的;或设为 ‘exclusive’,表示这类插桩有风险,可能导致无限循环。(这是因为独占存储失败,而后续每次重试也都失败。)
- gumjs:修复 arm 上 Stalker 的 CModule 绑定。
- stalker:修复在新增 slab 中执行失效操作时的崩溃。
- arm64-writer:添加 put_eor_reg_reg_reg()。感谢 @hsorbo 参与有趣且高效的结对编程!
oleavr