我正在尝试找到一种方法来验证代码中二进制文件的签名证书。例如,如果您运行命令:“codesign -vvvvd /YourApp/Executable”,您可能会收到输出:“Authority: Apple Root CA”等。我正在寻找一种在代码中执行此操作的方法。任何朝着正确方向的推动或推动都会非常出色。
谢谢!
我正在尝试找到一种方法来验证代码中二进制文件的签名证书。例如,如果您运行命令:“codesign -vvvvd /YourApp/Executable”,您可能会收到输出:“Authority: Apple Root CA”等。我正在寻找一种在代码中执行此操作的方法。任何朝着正确方向的推动或推动都会非常出色。
谢谢!
在 Mac 上,SecStaticCode
并SecCode
提供代码签名和验证功能。具体来说,SecCodeCopySelf()
将SecCodeCheckValidityWithErrors()
用于检查当前应用程序的代码签名。
请注意,已修改和退出(使用相同证书或任何其他证书)的应用程序实际上是无法检测到的,因为任何能够修改和退出应用程序的人都可以存根或以其他方式破坏您的验证码。上面提到的功能充其量是一个保持诚实的人诚实的解决方案。
在 iOS 上,Apple 的官方立场是您不应该尝试进行越狱检测或类似的操作,并且应该相信操作系统会正确处理。由于您无法运行动态加载的代码或读取其他应用程序的二进制数据,因此能够在该平台上验证代码签名并不是很有用。(Apple 的官方立场对你是否有用完全是另一回事。)
这对于使用Code Signing Services或Ole Begemann's code的 OS X 应用程序是可能的,但对于 iOS 似乎是不可能的。