我的OS X应用程序已通过修改主可执行文件而被破解。它已使用有效的开发者ID进行签名。
在默认的OS X安装上启动此破解版本时,我期待一些警告,因为代码签名不再有效。 我很惊讶它仍然没有任何问题与GateKeeper默认规则“App Store或仅验证开发人员”启动
为什么OS X仍然会启动这个无效的应用程序而没有任何警告,例如“此应用程序已损坏”? 在我的代码签名中是否需要进行任何更改,以便用户在启动此破解时至少将GateKeeper规则更改为“Everywhere”?
$ spctl -a -t exec -vv CrackedApp.app/
CrackedApp.app/: invalid signature (code or signature have been modified)
$ codesign --verify --deep --verbose=4 CrackedApp.app/
CrackedApp.app/: invalid signature (code or signature have been modified)
In architecture: x86_64
答案 0 :(得分:1)
请记住,只有在启动quarantine attribute集的文件时,GateKeeper才会生效。通过Safari,Mail,Messages和其他Apple软件直接下载的文件会自动设置隔离属性。点击“你确定要打开它吗?”警报,隔离标志被清除,不再咨询GateKeeper。如果您希望每次运行应用程序时都检查GateKeeper,那么您需要使用SecStaticCodeCheckValidity
等API实现自己的静态代码签名检查。当然,如果人们已经在修改你的可执行文件,那么他们也可以修改它以绕过这个额外的代码签名检查。