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