校验数字签名防止apkP二次打包
點評:實現這些程序后,最好用C語言寫成.so庫,.smali的明碼實在太容易看了。。。
Android系統的開放性和免費性等特征讓開發者和用戶趨之若鶩,用戶也漸漸習慣了Android應用的這種免費午餐,但在免費的背后卻有著巨大的安全陰影。
????“Android?APP二次打包”則是盜版正規Android?APP,破解后植入惡意代碼重新打包。不管從性能、用戶體驗、外觀它都跟正規APP一模一樣但是背后它確悄悄運行著可怕的程序,它會在不知不覺中浪費手機電量、流量,惡意扣費、偷窺隱私等等行為。
????面對二次打包不少公司都有自己的防范措施,知名公司的APP幾乎都是自己在程序內部做過處理防止其APP被二次打包,一旦打包后重新運行則程序自動退出。接下來,我就來詳解一下如何防止APP被二次打包。
????要實現代碼內部防止APP被二次打包首先得了解APK的機器識別原理,APK的唯一識別是依靠包名和簽名來做鑒定的,類似豌豆夾的洗白白、360手機衛士等安全軟件對APK的山寨識別,他們就是依賴包名來確定APK然后通過簽名來確定其是否山寨。所以說自己的程序內部在啟動的時候可以通過獲取APK本身的簽名然后和正確的簽名做對比來識別自己是否被二次打包。
通過PackageManag對象可以獲取APK自身的簽名。
?
?
通過對簽名的碼的分解得到一串20左右的字符串,此字符串則是APK的簽名的MD5值,通過獲取的簽名MD5值與正確的MD5值進行對比,就可以識別其APK是否被盜版。
?
下圖是一些已做過保護的APP的代碼塊分析:
?
上圖是“XX省電王“的防止二次打包的關鍵代碼
?
?
上圖是”XX電池管家”的防止二次打包的關鍵代碼
?
以上兩處都是smali層的代碼,以上2處代碼的截圖都是下載量非常高的APP所做的防止二次打包的處理,其處理的代碼肯定會使用到的關鍵代碼是
Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature。
此方法能夠起到一定的安全作用,一般的打包黨面對它是無可奈何的,如果你了解一些smali語法它的作用就等于0了。
?針對目前安卓應用市場中山寨APP泛濫的現狀,廣大APP開發者如何保護自身開發正果的唯一性與安全性呢?國內首家權威APP安全服務平臺—愛加密 推出免費APP加密保護服務,通過apk加密加固杜絕反編譯,二次打包的出現,有效防止了山寨APP的出現與傳播。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的校验数字签名防止apkP二次打包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何防止android软件被反编译,破解
- 下一篇: VC6.0环境设置说明