2013-01-03 95 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上,蘋果的官方立場是,你不應該試圖做越獄檢測或類似的,並應該相信操作系統來正確的。由於您無法運行動態加載的代碼或讀取其他應用程序的二進制數據,因此驗證該平臺上的代碼簽名並不是很有用。 (你完全是另一個討論無論蘋果的官方立場是非常有用的。)