Instruments 在 macOS Mojave 上使用 Hardened Runtime 使应用程序崩溃

Instruments crashes app with Hardened Runtime on macOS Mojave

我发现 Xcode 10 Instruments (Leaks) 无法附加到启用 Hardened Runtime 签名的命令行应用程序,并出现以下错误:

Error: Failed to attach to target process

我向应用程序添加了 com.apple.security.get-task-allow 授权,并重新签名。然后,应用程序不会附加失败,而是会因信号 9 而崩溃。当应用程序崩溃时,以下内容会记录到 Console.app:

CODE SIGNING: process 93890[appname]: rejecting invalid page at address 0x1015f9000 from offset 0x0 in file "" (cs_mtime:0.0 == mtime:0.0) (signed:0 validated:0 tainted:0 nx:0 wpmapped:1 dirty:0 depth:0)

如何将 Instruments 附加到此应用程序?我是 运行 macOS Mojave。

我找到了两种解决方法:

  1. 不要在启用强化运行时的情况下进行代码签名 - 这对于调试构建来说是一个很好的解决方案,但对于您可能想要的发布构建则不是 notarize。此外,它错过了 Hardened Runtime 提供的安全保护。

  2. 添加另一个权利:com.apple.security.cs.disable-executable-page-protection。这行得通,但我担心它是必需的。它还会影响安全性,但不如第一个解决方案。