ALLATORI JAVA混淆器介绍
Allatori作为第二代Java混淆器,通过高强度代码混淆防止逆向工程,兼具应用体积最小化和运行加速功能。其完整水印机制强化软件授权管理,是需代码保护及性能优化开发者的理想工具。
混淆技术的分类及作用:
根据混淆原理,可分为四类:
-
词法混淆
- 重命名类、方法、变量为无意义字符串(如
iIIllilllIlIilIiiliiil
),移除注释和调试信息。 - 作用:降低代码可读性,增加理解成本。
- 重命名类、方法、变量为无意义字符串(如
-
数据混淆
- 字符串加密:避免敏感字符串直接暴露(如数据库连接信息)。
- 数组重构:分裂/合并数组,改变维度隐藏数据结构。
- 变量分裂/合并:拆分变量为多个部分,或合并多个变量。
-
控制流混淆
- 插入无效条件分支(不透明谓词)、打乱循环逻辑、并行化代码。
- 作用:使执行流程复杂化,干扰反编译工具。
-
类结构混淆
- 类合并/分裂:将多个类合并为一个,或将一个类拆分为多个。
- 类型隐藏:用接口声明类,隐藏实际类型。
官网地址:allatori.com/
官网教程:

当前版本说明
版本9.4-2025年6月1日
Java 24支持
多模块工程介绍

在根目录下加入allatori文件夹,allatori.jar 是加密jar包,allatori.xml是具体配置。
allatori.xml配置
xml
<config>
<!--maven构建项目输入与输出名称-->
<input>
<jar in="${project.build.finalName}.jar" out="${project.build.finalName}-obfuscated.jar"/>
</input>
<!--指定混淆-->
<keep-names>
<!--字段与方法进行混淆-->
<class access="protected+">
<field access="protected+"/>
<method access="protected+"/>
</class>
<!--对指定类进行混淆-->
<class template="class *.TestFrame"/>
</keep-names>
<!-- 加密记录 -->
<property name="log-file" value="log.xml"/>
<!-- 忽略的包或类,这些文件将不被混淆 -->
<!-- <ignore-classes>-->
<!-- <class template="class *springframework*" />-->
<!-- <class template="class *shardingjdbc*" />-->
<!-- <class template="class *jni*" />-->
<!-- <class template="class *alibaba*"/>-->
<!-- <class template="class *persistence*"/>-->
<!-- <class template="class *mybatisplus*"/>-->
<!-- <class template="class *Interceptor*"/>-->
<!-- <!– 排除业务类 –>-->
<!-- <class template="class com.li.jdemo.allatorisub.*.handler.*" />-->
<!-- <class template="class com.li.jdemo.allatorisub.controller.*.*" />-->
<!-- <class template="class com.li.jdemo.allatorisub.*.dao.*" />-->
<!-- <class template="class com.li.jdemo.allatorisub.*.entity.*" />-->
<!-- <class template="class com.li.jdemo.allatorisub.*.data.*" />-->
<!-- </ignore-classes>-->
</config>
下面我们来看看pom.xml文件:
xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Copying Allatori configuration file to 'target' directory.
The destination file will be filtered (Maven properties used in configuration file will be resolved). -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>copy-and-filter-allatori-config</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target</outputDirectory>
<resources>
<resource>
<!--当前项目同级文件夹目录-->
<directory>../allatori</directory>
<includes>
<include>allatori.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<!-- Running Allatori -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.5.1</version>
<executions>
<execution>
<id>run-allatori</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<arguments>
<argument>-Xms128m</argument>
<argument>-Xmx512m</argument>
<argument>-jar</argument>
<!--当前项目同级文件夹目录-->
<argument>../allatori/lib/allatori.jar</argument>
<argument>${basedir}/target/allatori.xml</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
打包
通过打包获取到混淆后的jar包,allatori-sub-obfuscated.jar

混淆文件对比
通过对比发现混淆后的代码迷惑性很强,目标达成。


验证混淆文件启动
正常启动,目标达成。

classfinal 、xjar、allatori 、ProGuard工具对比
工具 | 防护等级 | 主要弱点 | 操作便捷性 |
---|---|---|---|
ProGuard | 抵御业余攻击者 | 混淆后代码仍可被反编译 | 需手动配置复杂规则(如-keep 保留特定类),多模块项目配置困难 |
Allatori | 中等-高级(商业级混淆) | 控制流混淆可能被动态分析破解 | 商业工具提供更友好界面 |
XJar | 低级(易被破解) | 开源设计导致加密算法暴露 | 配置简单,但需依赖特定环境(如XBoot-ClassLoader),且兼容性差 |
ClassFinal | 高级(加密+混淆) | 依赖JVM代理启动参数 | 无缝集成 :无需修改源码,直接加密JAR/WAR包。 支持Maven插件自动加密(mvn package 生成加密包)和命令行操作。 提供机器码绑定、无密码模式等灵活选项 |