通常可以通过codesign命令行调用查看应用程序是否存在沙盒权利。例如,调用这个
codesign --display --entitlements :- /Applications/Notes.app/ | grep sandbox
将导致此输出
Executable=/Applications/Notes.app/Contents/MacOS/Notes
<key>com.apple.security.app-sandbox</key>
其中 com.apple.security.app-sandbox 键表示应用程序在沙盒中运行。
在 Mavericks 上,一些 XPC 帮助应用程序在 Activity Monitor 中显示为在沙箱中运行,但在它们上调用 codesign 并没有显示任何内容。Safari 的 XPC 帮助应用程序之一的示例:-
codesign -display --entitlements :- /System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent | grep sandbox
只返回这个: -
Executable=/System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent
我还尝试使用本文中描述的代码以编程方式检查捆绑包是否为沙盒,但同样返回未沙盒,即使活动监视器明确指出它是沙盒。
是否可以检查这样的 xpc 捆绑包,查看是否将在沙箱中执行并使用沙箱权利?