Obfuscator 混淆器 - ProGuard
快速混淆步驟
1. 開啟GUI
java -jar proguardgui.jar
2. Input/Output:Add input -> 要被混淆的jar
3. Input/Output:Add output -> 混淆過後jar的輸出檔案位置
4. Input/Output:Add library -> 設定相關的library
5. Shrinking:關掉
6. Obfuscation :Options中留下Obfuscate及Flatten package hierarchy就好
7. Optimization:關掉
8. Information:如果是J2ME需開啟Preverify,否則關掉
9. Process:Process
混淆選項
* -dontobfuscate:不混淆
* -printmapping [filename] :輸出名稱轉換的對照表
* -applymapping filename :依對照表轉換名稱
* -obfuscationdictionary filename :自訂用來混淆的辭彙(用預設的a,b,c,..就很好了
* -overloadaggressively : 有些副作用,不管它
* -useuniqueclassmembernames : 讓自動產生的辭彙不會重複,以避免多次混淆時,遇到相同名稱時需要重新命名(不用管它,就讓ProGuard自動改名稱就好)
* -dontusemixedcaseclassnames:不要混合大小寫,建議勾選(有些作業系統會忽略檔名大小寫的差異,而視為相同檔案,如Windows)
* -flattenpackagehierarchy [package_name] :package階層扁平化,統一移到[package_name](不指定package_name時為root package)
* -repackageclasses [package_name] :全部移至一個package,會造成resource無法讀取
* -keepattributes [attribute_name,...]
* -renamesourcefileattribute [string]
* -adaptresourcefilenames [filter]
* -adaptresourcefilecontents [filter]
混淆器列表
* ProGuard freeware,支援Java 1.6
* yGuard freeware,支援Java 1.6
* jode freeware,不支援Java 1.5的部份語法
* The Marvin Obfuscator freeware,僅在Java 1.2, 1.3, 1.4beta上測試過
* RetroGuard 非商業授權
* Smokescreen/Timewindow 15天試用版(混淆器/使用時間限制)
* CodeShield 10天試用
* DashO 14天試用
* JCloak 30天試用
* jobfuscate 無限制試用,但試用版無實際混淆效果
* Zelix KlassMaster 30天試用
* Jshrink
延伸閱讀
* Java程序的加密和反加密
* 运用加密技术保护Java源代码
* Decompiling Java - Protecting Your Source: Strategies for Defeating Decompilers
沒有留言:
發佈留言