Android程式碼混淆防反編譯解決方案研究?

做Android開發的都知道要做混淆去防apk被反編譯、破解,通過proguard進行Java程式碼混淆。但是,Android程式碼混淆真的能起到實質性的作用嗎?看下面分析

​Android程式碼混淆

如下圖,對Android 程式碼進行混淆後混淆器將程式碼中的所有變數、函式、類的名稱加密為簡短的英文字母代號,在APP被破解後增加破解者對程式碼的閱讀難度。

Android程式碼混淆防反編譯解決方案研究

Android程式碼混淆防反編譯解決方案研究

但是混淆的功效只能運作在APP已經被破解後,而且只是增加破解者的難度時間,對其防止破解的作用意義不是很大。

那麼,Android程式碼混淆不能從根本上防破解,還有什麼方法呢?接下來看:

反工具破解之偽加密

偽加密是Android4.2.x系統釋出前最流行的加密方式之一,通過java程式碼對APK(壓縮檔案)進行偽加密,其修改原理是修改連續4位位元組標記為”P K 01 02”的後第5位位元組,奇數表示不加密偶數表示加密。偽加密後的APK不但可以防止PC端對它的解壓和檢視也同樣能防止反編譯工具編譯。

Android程式碼混淆防反編譯解決方案研究

Android程式碼混淆防反編譯解決方案研究

但是偽加密對其APK加密後市場也無法對其進行安全檢測,部分市場會拒絕這類APK上傳市場。偽加密的加密方式和解密方式也早已公佈導致它的安全程度也大大降低。Android4.2.x系統無法安裝偽加密的APK。

從上可看,Android程式碼混淆確實不如偽加密。但是Android程式碼混淆、偽加密也不是最靠譜的方法。接下來繼續看。

反工具破解之APK壓縮檔案破解

APK在PC上面可以看作一個壓縮檔案,在Android系統裡面它就是一個手機系統軟體檔案。Android系統對APK的識別是從標誌頭到標誌尾,其他多餘資料都會無視。所以說在標誌尾新增其他資料對把APK看做壓縮檔案的PC端來說這個檔案被破壞了,所以你要對其進行解壓或者檢視都會提示檔案已損壞,用反編譯工具也會提示檔案已損壞,但是它卻不會影響在Android系統裡面的正常執行和安裝而且也能相容到所有系統。

Android程式碼混淆防反編譯解決方案研究

Android程式碼混淆防反編譯解決方案研究

Android程式碼混淆防反編譯解決方案研究

但是這種APK壓縮包破壞存在APK偽加密一樣的問題,個別市場會不能識別導致不能上傳市場。使用壓縮檔案修復工具也能把它修復好讓我們做的保護消失。

三個分析,Android程式碼混淆、偽加密、壓縮檔案破解等均無法從根本上解決Android程式碼混淆防反編譯、破解的問題。那麼,我們繼續探討。

使用第三方平臺加密

Google對Android APP的安全處理是給APK簡單加密、java層原始碼加殼保護,對核心so庫、資原始檔、主配檔案、第三方jar包卻沒有任何保護處理。所做的保護也早已被黑客攻破但並沒有做任何升級維護導致Android APP現在沒有任何安全性。Android程式碼混淆

拿移動應用安全行業的第三方平臺——“愛加密”來說,在Android程式碼混淆的基礎上,以原始碼加殼保護、so庫核心程式碼加殼保護、資原始檔簽名保護、APK防二次打包保護等方面來對APK進行全方面保護。而且”愛加密”加密後的APP完全不會影響其執行效率和使用者體驗,相容性是最優的。

綜上所述,Android程式碼只做混淆是不行不行的,要真正保護Android程式碼的安全,還是要尋求更安全的加密保護技術!表只做Android程式碼混淆啦!

相關問題答案