混淆利器proguard的用法

利用java編程,最頭痛的就是代碼的反編譯,現在的反編譯工具也比較多,只要一反編譯,大部分都能被還原過來。這時候,用JAVA寫的PROGUARD橫空出世了,它集壓縮、優化、混淆於一體。下面介紹一下它的簡單用法。

先去官網http://proguard.sourceforge.net/ 下載一個版本

找到裏面的examples文件夾,先看一下示例

其中在applications.pro文件裏應有這麼一句

java -jar progurad.jar @application.pro

其中最爲關鍵的就是application.pro裏的文件配置,只要這個文件配置合適了,執行一下這個語句即可。

打開這個.pro文件,可以看到裏面的參數:

1、-injars //表示要進行混淆的class文件或jar、war等,可用文件目錄表示,例如:

2、-injar ../jar(**.class) 或者-injar ../jar/in.jar

3、-outjars 表示要生成的jar包,後跟jar包名字,如:-outjars ../out.jar

4、-libraryjars 後面跟要編譯in.jar的其它類包,如果是多個,用多行列出,如:

5、-libraryjars d:/1/2/1.jar

6、-libraryjars d:/1/2/2.jar

7、-libraryjars d:/1/2/3.jar

8、-libraryjars d:/1/2/4.jar

9、-keep 後跟項目的入口類,如:-keep public class gps.lip.LIPService{ public static void main(java.lang.String[])}

-keep 後還可以跟在項目中沒有用到的類或方法,但在配置文件中有用到,如果不用該參數保留出來,在做優化時,就會直接的刪除掉了,項目運行時會報找不到類的錯誤。

-printusage該參數是把優化時移除的類及方法記錄下來,後跟一個文件。如:-printusage ./jar/deadCode.txt

其餘的常用的參數,如:

10、-target 1.6 //指定版本號

11、-forceprocessing //強制執行,即使過期

12、-allowaccessmodification //指定,當執行修改方法或屬性的modifer範圍

13、-printmapping  //指定混淆後,類或方法生成的map,後跟指定的路徑及文件名 *.map

14、-overloadaggressively //

15、-repackageclasses //把執行後的類重新放在某一個目錄下,後跟一個目錄名

16、-dontpreverify //不用預先檢查

17、-verbose //不用輸出詳細的過程

18、-dontwarn//不用輸出警告

19、-dontnote//不用輸出通知

 

爲了增加混淆的難度,可以在

java -jar progurad.jar @application.pro 後再加 -classobfuscationdictionary ./dictionaries/windows.txt

即java -jar progurad.jar @application.pro -classobfuscationdictionary ./dictionaries/windows.txt

這樣生成的類名都是window系統命名系統嚴令禁止使用的文件名,反編譯時就更增加難度了

發佈了48 篇原創文章 · 獲贊 7 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章