本文使用的是官網(wǎng)提供的Demo卡睦,不是使用maven的插件
- 準備
開始初步混淆
解壓縮
Allatori-7.0-Demo
之后進入目錄Allatori-7.0-Demo\tutorial\step01\files
-
該目錄結(jié)構(gòu)如下圖所示:
-
config.xml
:該文件中配置的是你要如何混淆 -
RunAllatori.bat
:這個是啟動混淆的文件 -
Clean.bat
:這個是將log.xml以及生成混淆的文件刪除
-
-
config.xml
這個文件十分重要,將決定你混淆是否成功廓块。官方文件默認如下:<config> <input> <jar in="你的jar包名稱.jar" out="混淆后的jar包名稱.jar"/> </input> <keep-names> <class access="protected+"> <field access="protected+"/> <method access="protected+"/> </class> </keep-names> <property name="log-file" value="log.xml"/> </config>
-
將要混淆的jar包拷貝進入該文件夾下,雙擊運行
RunAllatori.bat
,即可生成混淆后的jar包- 打開cmd窗口使用
java -jar
運行該jar文件懈万,
大多數(shù)情況下都會報ClassNotFoundException
口予。如下圖所示:
- 打開cmd窗口使用
解決ClassNotFoundException
我個人認為出現(xiàn)這個問題的原因是由于將所有的類都進行了混淆導(dǎo)致無法識別
所以我們需要有選擇性的去混淆我們需要混淆的類
-
調(diào)整
config.xml
文件為如下:<config> <input> <jar in="test.jar" out="after_confuse.jar"/> </input> <keep-names> <class access="protected+"> <field access="protected+"/> <method access="protected+"/> </class> </keep-names> <ignore-classes> <class template="class com.zhoulianchang.mongo.SpringMongoApplication" /> <class template="class com.zhoulianchang.mongo.controller.*" /> <class template="class com.zhoulianchang.mongo.entity.*" /> <class template="class com.zhoulianchang.mongo.utils.*" /> </ignore-classes> <property name="log-file" value="log.xml"/> </config>
其中標簽
<ignore-classes>
代表忽略這些類,也就是說你選中的這些類都不進行混淆繼續(xù)雙擊運行
RunAllatori.bat
,再次運行新生成的jar包且轨,即可成功。
- 如果你使用的是自己的jar包至朗,可按照同樣的方法一個個忽略不需要混淆的包
反編譯查看混淆成功后的jar包
使用
jd-gui
打開jar包會發(fā)現(xiàn)其中的Service層中的一些變量名都已經(jīng)被混淆成看不懂的東西最后貼上完整版下載路徑唆香,如何使用請參考上文