1

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

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

请参阅:使用 10.11 和系统完整性保护的调试系统首选项窗格

在 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 的方法来做到这一点?

4

1 回答 1

0

该应用程序可能会受到强化运行时的限制。如果没有放宽这些限制的权利,它将被阻止,例如,加载未经 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>
于 2019-11-05T07:57:48.233 回答