代码混淆 -- SpringBoot集成Allatori对源代码混淆,防反编译获取源码

向导

    • Allatori介绍
    • 使用
    • 结果
    • 注意的点

Allatori介绍

Allatori是第二代Java混淆器,可为您的知识产权提供全方位的保护。

尽管大多数第二代混淆器都提供了值得保护的级别,但我们已经在Allatori中开发了许多附加功能,
以使对代码进行逆向工程几乎不可能。

Allatori不仅会混淆,还会最大程度地减少应用程序的大小并提高速度,同时您和您的团队以外的任何人
都无法读取您的代码。作为每个现代Java混淆器,Allatori具有完整的水印功能,从而有可能为您的软件
提供适当的许可!

如果有必要保护您的软件,并且要减少软件的大小和缩短处理时间,则可以使用Allatori混淆器。

- - -  摘自官网

官网首页:http://www.allatori.com/
官网文档:http://www.allatori.com/doc.html/

使用

  1. 官网下载jar包,将jar包放入项目中
    在这里插入图片描述
  2. 配置maven插件,如果是maven多模块,可以将jar包提取到父目录共用,xml文件各自配置各自的
 
<plugin>
    <groupId>org.codehaus.mojogroupId>
    <artifactId>exec-maven-pluginartifactId>
    <version>1.2.1version>
    <executions>
        <execution>
            <id>run-allatoriid>
            <phase>packagephase>
            <goals>
                <goal>execgoal>
            goals>
        execution>
    executions>
    <configuration>
        <executable>javaexecutable>
        <arguments>
            <argument>-Xms128margument>
            <argument>-Xmx512margument>
            <argument>-jarargument>
            
            <argument>../lib/allatori.jarargument>
            
            <argument>${basedir}/src/main/resources/allatori.xmlargument>
        arguments>
    configuration>
plugin>

  1. 配置allatori.xml文件,配置混淆规则
混淆的成功与否在于配置的对与错
<config>
    
    <input>
        <jar in="../../../target/artemis-web-1.0-SNAPSHOT.war" out="../../../target/artemis-web.war"/>
    input>
    
    <keep-names>
        <class access="protected+">
            <field access="private+"/>
            <method access="protected+"/>
        class>
    keep-names>
    
    <property name="local-variables-naming" value="keep-parameters"/>
    
    <ignore-classes>
        
        
        
        <class template="class  com.caxs.artemis.ArtemisWebApplication"/>
        <class template="class  com.caxs.artemis.shiro*"/>
        <class template="class  com.caxs.artemis.config*"/>
        <class template="class  com.caxs.artemis.redis.service.*"/>
        <class template="class  com.caxs.artemis.hive.datasource.*"/>
        <class template="class com.caxs.artemis.api*"/>
        <class template="class com.caxs.artemis.base*"/>
        <class template="class com.caxs.artemis.enums*"/>
        <class template="class  com.caxs.artemis.**.dto*"/>
        <class template="class  com.caxs.artemis.**.domain*"/>
        
        <class template="class  *springframework*"/>
        <class template="class  *netty*"/>
        <class template="class  com.alibaba.dubbo**"/>
        <class template="class  org.springframework.core.io.ClassPathResource"/>
    ignore-classes>
    
    
    
    
    
    <expiry date="2020/06/15" string="EXPIRED!"/>
    
    <property name="random-seed" value="cshxzf jrncbd hh"/>
config>

  1. 使用maven正常打包即可,在target下会生成你配置的out的jar文件
    在这里插入图片描述

结果

代码混淆 -- SpringBoot集成Allatori对源代码混淆,防反编译获取源码_第1张图片

注意的点

  1. 不混淆框架内的东西,最好只混淆自己的核心逻辑,所以在上面配置了ignore,否则可能jar包都运行不了。
  2. 不混淆Redis、Jbdc等相关连接信息类
  3. 不混淆DAO层和Entity层,因为混淆会把形参名字改掉,导致映射有问题
  4. 混淆Controller层时,可以配置:local-variables-naming=keep-parameters,保证形参名称不变,因为web层,spring要映射mapping和形参的,其实和上面是一样的道理
    在这里插入图片描述

你可能感兴趣的:(工具和问题)