Allatori是一款專業的Java代碼混淆器,提供命名混淆、流混淆、調試信息混淆、字符串混淆等多種混淆方式,混淆過後的代碼很難被識別,從而保護編程人員的知識産權,支持war和ear文件格式,允許對需要混淆代碼的應用程序添加有效日期。需要的朋友可以下載!

Allatori使用教程
1、 文件结构
解壓後的目錄
混淆時依賴的jar包
下面是官方帶的例子,裏面有配置文件(config.xml)、運行混淆的命令文件(RunAllatori.bat)、清除産生的新文件的命令文件(Clean.bat)、將要被混淆的jar文件(test.jar、mousegestures-1.2.jar)
示例圖
2、文件詳細說明
圖中各個文件的內容可以從下圖中看到:
1、 Clean.bat
就是刪除生成的被混淆的文件和log文件
Clean.bat文件內容
2、 RunAllatori
調用Java命令運行allatori.jar文件,並且加載config.xml配置文件
RunAllatori文件內容
3、 config.xml
配置文件,是混淆過程中最重要的文件,需要用戶根據實際情況來配置
Config.xml文件內容
4、 配置文件
config標簽:這個是配置的根標簽。
Jars標簽:用來設置將要被混淆的jar(war,ear)文件。應該至少包含一個嵌套的jar標簽和dir標簽來設置輸入和輸出文件。我們的例子中可以看到包含了兩個jar標簽
Jar標簽:有兩個屬性—in、out,分別表示將要被混淆的jar文件和混淆後輸出的文件
Keep-names標簽:用來設置那些在混淆過程中不需要被重命名的類、方法、變量。如果被混淆的應用是個公共庫,那麽應該保留所有的公共接口名字不被重命令;如果是個獨立的應用程序,那麽將至少保留主類的名字不被重命名;當使用到反射的時候,也要保持類名和方法名字不被重命名
Property標簽:用來設置不同的混淆特性的,它有兩個必備的屬性:name和value。Name可以設置爲----log文件、字符串加密、控制混淆流程、重命名方式等
2、 混淆效果
混淆前
混淆前的代碼
混淆後的反編譯效果:
混淆後反編譯效果
四、在項目中實際應用
我們拿定位服務器來進行演示。
1、導出應用爲war包

选择war file
選擇保存的路徑
點擊Finish
2、准備lib包和編寫配置文件
准備的文件
Lib目錄裏面是gmlc運行所需要的jar包

配置文件
運行文件
3、運行開始命令
雙擊RunAllatori.bat文件
運行窗口
運行完成後會生成兩個文件:gmlc.allobf.war、log.xml文件
混淆完成後
Log.xml文件內容:
通過log.xml文件可以查看哪些類、方法、變量被混淆後重命名成什麽樣的名字
而gmlc.allobf.war就是混淆後的工件了,可以直接發布部署到tomcat的webapps目錄下,啓動tomcat就可以訪問了(當然啓動之前修改一下名字,改爲gmlc.war)
混淆器的優勢
混淆就是對發布出去的程序進行重新組織和處理,使得處理後的代碼與處理前代碼完成相同的功能,而混淆後的代碼很難被反編譯,即使反編譯成功也很難得出程序的真正語義。被混淆過的程序代碼,仍然遵照原來的檔案格式和指令集,執行結果也與混淆前一樣,只是混淆器將代碼中的所有變量、函數、類的名稱變爲簡短的英文字母代號,在缺乏相應的函數名和程序注釋的況下,即使被反編譯,也將難以閱讀。同時混淆是不可逆的,在混淆的過程中一些不影響正常運行的信息將永久丟失,這些信息的丟失使程序變得更加難以理解。
混淆器的作用不仅仅是保护代码,它也有精简编译后程序大小的作用。由于以上介绍的缩短变量和函数名以及丢失部分信息的原因, 编译后jar文件体积大约能减少25% ,这对当前费用较贵的无线网络传输是有一定意义的。