2013-03-22 64 views
0

二元我嘗試了一下安全添加到我的應用程序。我有一個應用程序連接到的服務器,我想在連接時發送二進制文件的校驗和。如果校驗和與我想要的不匹配。服務器不允許任何連接。Xcode的IOS,校驗您在運行時

從來就看過一些的,你可以如何提高應用的安全性和多提checksuming的二進制文件,但haven't文章中找到的任何代碼,說明如何,你居然校驗運行時二進制文件。

這一個例如 http://www.seoxys.com/3-easy-tips-to-prevent-a-binary-crack/#ptrace

除此之外,從我的理解,沒有辦法知道確切的校驗和前手自提出當蘋果將簽署的辦法嗎?但是,我可以在提交新版本時禁用服務器上的檢查,然後在知道校驗和時重新啓用檢查。不是完美的解決方案,但解決方案是什麼

任何人都可以點我朝着正確的方向?

回答

0

總之,這是一個非常困難的事情。之所以這樣,是因爲你一旦離開你的手就不能控制客戶端代碼。即使你得到的一切與校驗和完美的工作,並且攻擊者仍然可以把二進制的校驗,修改它,然後把它提交先前的校驗,而不是新的,通過修改代碼。事實上,你可能會通過使用像_getBinaryChecksum()這樣的函數使他/她變得更容易,他只需更改:-)

如果要這樣做,請使用加密強加密算法,如SHA-256。你是正確的,蘋果公司簽署它會改變散,所以你需要後蘋果標誌它與文件的哈希服務器程序。同時請記住,任何對應用程序的更改都會對散列造成很大影響,因此您需要保留以前散列的歷史列表,這樣您就不會拒絕尚未升級的客戶。

你可能想看看這些StackOverflow的問題,因爲它聽起來像你試圖做類似的事情:

Security When Using REST API in an iPhone Application

https://stackoverflow.com/questions/15390354/api-key-alternative/15390892#15390892

+0

感謝您的回答。您給我的鏈接之一說您可以使用私人/公共密鑰對。我目前使用公鑰來加密一些消息,並使用服務器上的私鑰對其進行解密。但是,這並不會驗證發件人,因爲公鑰已嵌入到應用程序中,因此任何人都可以使用它。他們說你應該使用私鑰,但我不明白這會有什麼不同。關鍵還是必須嵌入到應用程序中,因此任何人都可以使用它。 – M3rd0n 2013-03-23 12:53:40

+0

我也發現這個鏈接,現在會通讀它,看看它是否有用。 http://stackoverflow.com/questions/1356896/how-to-hide-a-string-in-binary-code – M3rd0n 2013-03-23 12:55:22