Android Proguard代碼混淆面試知識小結

今天我們來學習下 Proguard 代碼混淆的知識,由於Java代碼非常容易被反編碼,爲了很好的保護Java源代碼,我們需要對編譯好後的class文件進行混淆,增加項目被反編譯的難度。

一、proguard是什麼?

proguard 工具是用於壓縮,優化,混淆我們的代碼,主要作用是可以移除代碼中的無用類,字段,方法和屬性。縮小apk的體積,增加項目被反編譯的難度。

二、proguard 技術的功能

1、壓縮 :檢測並移除代碼中無用的類、字段、方法和屬性(Attribute);

2、優化:對字節碼進行優化,移除無用的指令;

3、混淆:使用a,b,c,d這樣簡短而無意義的名稱,對類、字段和方法進行重命名;

4、預檢測:在Java平臺上對處理後的代碼進行預檢,確保加載的class文件是可執行的;

三、proguard 工作原理

  • 移除沒有用到的代碼,然後對代碼裏面的類、變量、方法重命名爲人可讀性很差的簡短名字。

  • Entry Point :
    標識不會被處理的類和方法; 在壓縮的步驟中,Proguard會從上述的Entry Point開始遞歸遍歷,搜索哪些類和類的成員在使用,對於沒有被使用的類和類的成員,就會在壓縮段丟棄,在接下來的優化過程中,那些非Entry Point的類、方法都會被設置爲private、static或final,不使用的參數會被移除,此外,有些方法會被標記爲內聯的,在混淆的步驟中,Proguard會對非Entry Point的類和方法進行重命名。

四、爲什麼需要混淆?

java是跨平臺解釋性語言,java源代碼會編譯成字節碼.class文件,由於跨平臺的需要,字節碼包含很多源代碼的信息,容易被反編譯。

相關資料:
proguard 官網
ProGuard代碼混淆技術詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章