2013-01-03 74 views
1

我试图找到一种方法来验证代码中的二进制文件的签名证书。例如,如果运行命令“codesign -vvvvd/YourApp/Executable”,则可能会收到输出:“Authority:Apple Root CA”等。我正在寻找一种在代码中执行此操作的方法。任何推动或推动正确的方向将是突出的。如何验证代码中的二进制签名证书?

谢谢!

+0

这可能会有所帮助: http://stackoverflow.com/questions/1475182/cocoa-objective-c-shell -command-线执行 –

回答

4

在Mac上,SecStaticCodeSecCode提供代码签名和验证功能。具体而言,将使用SecCodeCopySelf()SecCodeCheckValidityWithErrors()来检查当前应用程序的代码签名。

请注意,已修改并辞职的应用程序(使用相同的证书或任何其他应用程序)实际上无法检测到,因为任何能够修改应用程序并将其退出的人都可以删除或以其他方式破坏验证代码。上述功能充其量是一个诚实守信的人诚实的解决方案。

在iOS上,苹果的官方立场是,你不应该试图做越狱检测或类似的,并应该相信操作系统来正确的。由于您无法运行动态加载的代码或读取其他应用程序的二进制数据,因此验证该平台上的代码签名并不是很有用。 (你完全是另一个讨论无论苹果的官方立场是非常有用的。)