做Android開發(fā)的都知道要做混淆去防apk被反編譯、破解,通過proguard進(jìn)行Java代碼混淆。但是,Android代碼混淆真的能起到實(shí)質(zhì)性的作用嗎?看下面分析
1、Android代碼混淆
如上圖,對(duì)Android 代碼進(jìn)行混淆后混淆器將代碼中的所有變量、函數(shù)、類的名稱加密為簡短的英文字母代號(hào),在APP被破解后增加破解者對(duì)代碼的瀏覽難度。
但是混淆的功效只能運(yùn)作在APP已被破解后,而且只是增加破解者的難度時(shí)間,對(duì)其避免破解的作意圖義不是很大。
那末,Android代碼混淆不能從根本上防破解,還有甚么方法呢?接下來看:
2、反工具破解之偽加密
偽加密是Android4.2.x系統(tǒng)發(fā)布前最流行的加密方式之1,通過java代碼對(duì)APK(緊縮文件)進(jìn)行偽加密,其修改原理是修改連續(xù)4位字節(jié)標(biāo)記為”P K 01 02”的后第5位字節(jié),奇數(shù)表示不加密偶數(shù)表示加密。偽加密后的APK不但可以避免PC端對(duì)它的解壓和查看也一樣能避免反編譯工具編譯。
但是偽加密對(duì)其APK加密后市場也沒法對(duì)其進(jìn)行安全檢測,部份市場會(huì)謝絕這類APK上傳市場。偽加密的加密方式和解密方式也早已公布致使它的安全程度也大大下降。Android4.2.x系統(tǒng)沒法安裝偽加密的APK。
從上可看,Android代碼混淆確切不如偽加密。但是Android代碼混淆、偽加密也不是最靠譜的方法。接下來繼續(xù)看。
3、反工具破解之APK緊縮文件破解
APK在PC上面可以看做1個(gè)緊縮文件,在Android系統(tǒng)里面它就是1個(gè)手機(jī)系統(tǒng)軟件文件。Android系統(tǒng)對(duì)APK的辨認(rèn)是從標(biāo)志頭到標(biāo)志尾,其他過剩數(shù)據(jù)都會(huì)疏忽。所以說在標(biāo)志尾添加其他數(shù)據(jù)對(duì)把APK看作緊縮文件的PC端來講這個(gè)文件被破壞了,所以你要對(duì)其進(jìn)行解壓或查看都會(huì)提示文件已破壞,用反編譯工具也會(huì)提示文件已破壞,但是它卻不會(huì)影響在Android系統(tǒng)里面的正常運(yùn)行和安裝而且也能兼容到所有系統(tǒng)。
但是這類APK緊縮包破壞存在APK偽加密1樣的問題,個(gè)別市場會(huì)不能辨認(rèn)致使不能上傳市場。使用緊縮文件修復(fù)工具也能把它修復(fù)好讓我們做的保護(hù)消失。
3個(gè)分析,Android代碼混淆、偽加密、緊縮文件破解等均沒法從根本上解決Android代碼混淆防反編譯、破解的問題。那末,我們繼續(xù)探討。
4、使用第3方平臺(tái)加密
Google對(duì)Android APP的安全處理是給APK簡單加密、java層源碼加殼保護(hù),對(duì)核心so庫、資源文件、主配文件、第3方j(luò)ar包卻沒有任何保護(hù)處理。所做的保護(hù)也早已被黑客攻破但并沒有做任何升級(jí)保護(hù)致使Android APP現(xiàn)在沒有任何安全性。
拿移動(dòng)利用安全行業(yè)的第3方平臺(tái)――“愛加密”來講,在Android代碼混淆的基礎(chǔ)上,以源碼加殼保護(hù)、so庫核心代碼加殼保護(hù)、資源文件簽名保護(hù)、APK防2次打包保護(hù)等方面來對(duì)APK進(jìn)行全方面保護(hù)。而且加密后的APP完全不會(huì)影響其運(yùn)行效力和用戶體驗(yàn),兼容性是最優(yōu)的。
綜上所述,Android代碼只做混淆是不行不行的,要真正保護(hù)Android代碼的安全,還是要尋求更安全的加密保護(hù)技術(shù)!表只做Android代碼混淆啦!
上一篇 sdut 6-1 多態(tài)性與虛函數(shù)
下一篇 模仿去哪兒的磁貼效果