blogspot.com-GA4

星期三, 6月 24, 2009

Obfuscator 混淆器 - ProGuard(轉)

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

沒有留言: