这次有许多好东西:

  • stalker:从多个方面提高稳定性。感谢 @as0ler、@hsorbo 和 @mrmacete 参与愉快而富有成效的集体编程,促成了这些精彩改进:
    • stalker:在 arm64 上直接复制被排除调用的 BLR,而不是用功能等价的指令替换, 从而确保任何指针认证上下文都按预期使用。感谢 @mrmacete!
    • stalker:在 arm64 上 allocate_near() 失败时中止,而不是因随后解引用 NULL 指针而崩溃。
    • gumjs:修复在已停止的 sink 上调用 Stalker.flush() 时的崩溃。 如果刚刚调用过 Stalker.garbageCollect(),就会发生这种情况。
    • gumjs:修复 Stalker QuickJS 回调逻辑中的释放后使用问题。如果执行到一半时发生 Stalker.garbageCollect() 并释放回调值,我们需要让这些值继续存活。
  • darwin:改进符号解析器缓存失效逻辑。感谢 @mrmacete!
  • swift-api-resolver:处理已签名指针。
  • linux:改进 spawn(),以处理不完整的链接映射。
  • linux:改进注入器,以处理 XOM 页面。
  • linux:改进注入器的 RTLD API 检测。
  • linux:修复注入器的 ELF SYMTAB 名称解析。
  • node:在 UNIX 上链接 inspector 库,修复调用 Script#enableDebugger() 时的 RTLD panic。 感谢 @pandasauce!
  • ci:发布适用于 Node.js 20 和 Electron 27 的 FreeBSD 预构建版本。