【问题标题】:Debug System Pref Pane w/10.15 and System Integrity Protection带有 10.15 和系统完整性保护的调试系统首选项窗格
【发布时间】:2020-03-01 10:06:40
【问题描述】:

过去,我可以通过对系统偏好设置应用程序的副本进行自签名,并将其设置为 Xcode 中的运行目标,从而在系统偏好设置中运行/调试自行开发的偏好设置窗格。

一个符号链接放置在 ~/Library/PreferencePanes 中,它指向 Xcode 构建的输出 prefPane 并且一切正常……至少它曾经在 10.11 到 10.14 下使用。

见:Debug System Pref Pane w/10.11 and System Integrity Protection

低于 10.15 这会中断。虽然 prefPane 正确加载了真实的(Apple 签名的)系统偏好设置应用程序,但当我尝试在系统偏好设置的自签名副本中运行我的 prefPane 时,我得到“无法加载偏好设置窗格”。尝试加载任何 Apple 内置偏好窗格时也会发生同样的情况。

我都试过了:

codesign -s "My Developer ID" -f "/Applications/System Preferences Copy.app"

codesign -s - -f "/Applications/System Preferences Copy.app"

控制台中不会产生错误。

我的猜测是在加载过程中的某个地方,它正在检查系统偏好设置主机应用程序是否由 Apple 签名。如果我尝试使用真正的系统偏好设置应用程序作为调试目标,则会收到系统完整性保护错误。

有没有像 10.11 到 10.14 那样禁用 SIP 的方法来做到这一点?

【问题讨论】:

    标签: xcode debugging cocoa macos-catalina nspreferencepane


    【解决方案1】:

    应用程序可能会受到强化运行时的限制。如果没有 entitlements 来放宽这些限制,它将被阻止,例如,加载未经 Apple 签名的代码或来自同一团队的身份。

    您需要使用--options runtime --entitlements <path> 选项签署您的副本。该路径应指向字典的 plist 文件,其键是权利,值通常是布尔值。例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>com.apple.security.cs.disable-library-validation</key>
        <true/>
    </dict>
    </plist>
    

    【讨论】:

    • 我试过codesign --force --deep --options runtime --entitlements (path to above-mentioned plist) --sign (My Developer ID Cert Name) --timestamp (Path to copy of System Preferences app)。仍然给我同样的错误,但这感觉就像一个解决方案。
    • 禁用 SIP 允许系统偏好设置运行,但我的断点从未像在 10.11 到 10.14 中那样被命中。确实非常令人沮丧。
    • 关于强化的运行时限制,您可以查看加载窗格失败时是否有任何内容写入控制台日志。您还可以尝试添加更多权利,看看它是否也需要它们。不知道为什么断点在禁用 SIP 的情况下不起作用。
    • 我从您的新问题中看到您的窗格可能正在“legacyLoader”中加载。您应该仔细检查它是否具有所需的权利。 (我知道你在签名时通过了--deep,但请仔细检查。)
    • 是的。似乎没有办法制作 legacyLoader 的副本并让 System Preferences 加载修改后的版本,因此禁用 SIP 似乎是唯一的方法,因为我不想永久更改内置的 legacyLoader。我不介意在我的测试机器上禁用 SIP,但不会在我的主机上这样做。
    猜你喜欢
    • 2015-12-27
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多