我正在使用C语言编写一个命令行程序,通常的方式是在命令行上使用gcc进行编译等。我希望我的程序能够使用Hypervisor.framework。为了做到这一点,它需要com.apple.security.hypervisor
特权。我该如何将此特权添加到已编译的二进制文件中,以使其能够运行?
我正在使用C语言编写一个命令行程序,通常的方式是在命令行上使用gcc进行编译等。我希望我的程序能够使用Hypervisor.framework。为了做到这一点,它需要com.apple.security.hypervisor
特权。我该如何将此特权添加到已编译的二进制文件中,以使其能够运行?
很抱歉要挖掘一个旧的帖子,另一种方法是将其链接到:
zpool_LDFLAGS = -sectcreate __TEXT __info_plist yourcmd-Info.plist
zpool_LDFLAGS += -sectcreate __TEXT __entitlements yourcmd-entitlements.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.allow-unsigned-executable-memory</key>
<true/>
</dict>
</plist>
将内容保存在entitleme.plist
文件中,然后运行以下命令:
codesign --sign - \
--entitlements entitleme.plist \
--deep <your-binary> \
--force
关于代码签名的Homebrew问题的其他参考:https://github.com/Homebrew/brew/issues/9082