iOS二進位制和資源包的自檢

黑暗森林的歌者發表於2018-02-26

因為現在做的是企業版的APP,不能保證使用者不越獄,也不能保證有些使用者喜歡自己修改ipa包裡的資原始檔,比如更換一些資源圖片。因此,我們有必要在請求報文中,增加正版應用的二進位制和資原始檔的標識,讓伺服器知道,此請求是否來自正版的未經修改的app。

  在沙盒中我們可以讀到自己程式的二進位制,也可以讀到資原始檔簽名檔案,我們可以對其取md5值得到一個標記字串,然後發給伺服器,對比儲存在伺服器段的MD5值是否正確,如果APP被修改就禁止繼續使用,殺掉自己的程式。

  下面是獲取自己APP的二進位制、資原始檔和簽名檔案的獲取方法。因為從iOS8開始沙盒機制有所變化,文稿和資原始檔分開在不同的路徑,而且文稿是一個動態的路徑,所以獲取方法要區分系統版本。

 下面貼程式碼:

定義加密型別(MD5 SHA1 SHA512)

Paste_Image.png

封裝加密方法

Paste_Image.png

獲取資源包的加密後字串

Paste_Image.png

獲取簽名證書加密後的字串

Paste_Image.png

可以根據自己的需要把這些資訊傳送給伺服器進行判斷,現在我們做的是APP版本號、iPhone版或iPad版再加上面兩條字串發給伺服器。

外加自動殺掉自己程式的方法:

Paste_Image.png

補充:突然發現在打包之前clean一下,獲取到的sourceData會改變,現在的做法是增加一個彈出的alertView,title是獲取的sourcedata的md5值,每次打包前clean一次,然後run一次,通過彈出的提示手動記錄一下md5值,然後註釋掉alertView的程式碼,這時候再打包,注意這次就不要clean了,只改變幾行簡單的程式碼不會影響APP的功能也不會改變appdata和sourcedata。(如果發現其他更好的方法會及時更新)

相關文章