程式碼混淆防止APP被反編譯指南

weixin_34162629發表於2018-09-14

本文來自網易雲社群


安卓App安全包含很多內容,包括混淆程式碼、整體Dex加固、拆分 Dex 加固、虛擬機器加固等方面。事實上,這些內容也是國內近幾年Android App安全保護的一種主要趨勢。


混淆程式碼

Java程式碼是非常容易反編譯的,作為一種跨平臺的、解釋型語言,Java 原始碼被編譯成中間“位元組碼”儲存於class檔案中。由於跨平臺的需要,這些位元組碼帶有許多的語義資訊,很容易被反編譯成Java原始碼。為了很好地保護Java原始碼,開發者往往會對編譯好的class檔案進行混淆處理。

混淆就是對釋出出去的程式進行重新組織和處理,使得處理後的程式碼與處理前程式碼完成相同的功能,而混淆後的程式碼很難被反編譯,即使反編譯成功也很難得出程式的真正語義。ProGuard就是一個混淆程式碼的開源專案,能夠對位元組碼進行混淆、縮減體積、優化等處理。

Proguard處理流程圖如下所示,包含壓縮、優化、混淆、預檢四個主要環節:

1. 壓縮(Shrink):檢測並移除程式碼中無用的類、欄位、方法和特性(Attribute);


2. 優化(Optimize):對位元組碼進行優化,移除無用的指令。優化程式碼,非入口節點類會加上private/static/final,沒有用到的引數會被刪除,一些方法可能會變成內聯程式碼;

3. 混淆(Obfuscate):使用a、b、c、d這樣簡短而無意義的名稱,對類、欄位和方法進行重新命名;

4. 預檢(Preveirfy):在Java平臺上對處理後的程式碼進行預檢,確保載入的class檔案是可執行的。


網易雲 Android 應用加固 免費試用,有效防止應用被逆向分析、反編譯、二次打包,核心功能包括 DEX 加固,SO 加密保護,記憶體防 Dump 保護,防偵錯程式,防模擬器等。

相關文章:
【推薦】 2017年內容安全十大事件盤點
【推薦】 關於評審--從思想到落地
【推薦】 透過資料看真相:手遊市場趨勢報告

相關文章