本文使用的是官网提供的Demo,不是使用maven的插件
- 准备
开始初步混淆
解压缩
Allatori-7.0-Demo
之后进入目录Allatori-7.0-Demo\tutorial\step01\files
-
该目录结构如下图所示:
-
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文件,
大多数情况下都会报ClassNotFoundException
。如下图所示:
- 打开cmd窗口使用
解决ClassNotFoundException
我个人认为出现这个问题的原因是由于将所有的类都进行了混淆导致无法识别
所以我们需要有选择性的去混淆我们需要混淆的类
-
调整
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>
代表忽略这些类,也就是说你选中的这些类都不进行混淆继续双击运行
RunAllatori.bat
,再次运行新生成的jar包,即可成功。
- 如果你使用的是自己的jar包,可按照同样的方法一个个忽略不需要混淆的包
反编译查看混淆成功后的jar包
使用
jd-gui
打开jar包会发现其中的Service层中的一些变量名都已经被混淆成看不懂的东西最后贴上完整版下载路径,如何使用请参考上文