Android app的安全愈來愈受人重視,大部分市場上存放的apk已經通過各類加密來防止反編譯。如今咱們就來淺談一下市面上已通過加密防止反編譯的apk和它是如何防止反編譯的方法和這些方法的可靠性吧。
捕魚達人2java
各大市場遊戲下載排行都名列前茅、下載實數不下百萬的捕魚達人2是怎麼作的安全保護來防止二次打包呢? 在手機內部獲取data/app下的apk 文件對象經過java的方式來獲取簽名MD5值。而後再本地對這個簽名MD5值進行驗證。由於此驗證是在so庫裏面來進行而且在非主線程裏面進行驗證,沒有卡主線程很難讓破解的人發現它加密的主要方法具體在哪,但對下的驗證的方法帶有apk的路徑的參數讓它也有必定的漏洞。只須要僞造一個路徑(正版apk路徑)傳遞給so庫就可讓其保護無效。 總結:運行在so庫裏面、用java獲取簽名信息的方法、非主線程進行驗證大大增長此方法的安全做用,可是在java層提供的native方法依舊有一個String類型的參數讓其很容易僞造參數來破壞保護。
神廟逃亡2android
依據是各大市場煊赫一時、下載量都極高的遊戲神廟逃亡2,由於用戶量極高全部它的安全要求會更高。那神廟逃亡2是如何作安全保護來防止二次打包的呢?
如上圖能夠看到,此遊戲在驗證簽名信息非官方的狀況下會彈出模式窗體提示給用戶此APK是盜版軟件。一切驗證都是在java層經過android提供的方法來獲取簽名信息上傳服務器再服務器來進行驗證,經過服務器的返回值來讓客戶端軟件知道自身是不是正版軟件。此方法能夠說做用不大,首先是無網絡的狀況下是徹底沒法進行驗證;其次是全部驗證方法都在java層讓它的可靠性大大下降,很容易就反編譯到源碼修改代碼讓其保護做用基本無效。segmentfault
總結:本地java層使用android方法來獲取簽名信息,上傳服務器進行驗證,經過服務器反饋來告知軟件是否官方版;可利用漏洞太多,保護做用意義基本爲零。
更多內容,期待您的探索,請關注愛加密,讓您精彩不斷!安全
愛加密官方地址:http://www.ijiami.cn/服務器