Allatori 代码混淆 整合springboot 项目 初体验

Allatori
最近涉及到一些代码安全方面的工作,找到Allatori 这个代码混淆工具,代码混淆是将代码中类名、方法名、属性名替换为无意义符号,增加代码逆向难度,对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低,从而实现代码保护。
官网下载 http://www.allatori.com/ 压缩包

1.pom.xml中引入插件

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.2.1.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Allatori plugin start -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <id>copy-and-filter-allatori-config</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.basedir}/target</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${project.basedir}/src/main/resources</directory>
                                    <includes>
                                        <include>allatori.xml</include>
                                    </includes>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.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>
                        <!-- allatori混淆的jar文件目录 -->
                        <argument>${project.basedir}/lib/allatori.jar</argument>
                        <!-- allatori混淆的配置文件-->
                        <argument>${project.basedir}/src/main/resources/allatori.xml</argument>
                    </arguments>
                </configuration>
            </plugin>
            <!-- Allatori plugin end -->
        </plugins>
    </build>

2.打开下载好的压缩包,找到 这两个jar包
在这里插入图片描述
3.复制上面两个jar包到项目目录下新建一个lib 丢进去,这里我的项目是多模块的项目,先放在start目录下
在这里插入图片描述
4.resource 目录下新增allatori.xml
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <input>
        <!-- 这里的in表示需要混淆的jar(springboot打包后的jar),out表示输出混淆后的jar(混淆器修改springboot打包后的jar) -->
        <jar in="../../../target/xxx.jar" out="../../../target/xxx-obfuscated.jar" />

    </input>
    <!-- 不替换类名、方法名、属性名 -->
    <keep-names>
        <class access="protected+">
            <field access="protected+" />
            <method access="protected+" />
        </class>
    </keep-names>

    <ignore-classes>
        <!-- 	忽略springBoot的启动项(防止启动报错)	 -->
        <class template="class *springframework*" />
        <!-- 不混淆框架内的东西(包括Redis,Jbdc,DAO层和Entity层等),最好只混淆自己的核心逻辑-->
    </ignore-classes>
    <!-- 接口形参名保持不变 -->
    <property name="local-variables-naming" value="keep-parameters"/>
    <property name="log-file" value="log.xml" />
    <!--	添加水印密匙,主要用来保护版权	 -->
    <!-- <watermark key="secure-key-to-extract-watermark" value="Customer: John Smith; Date: xx.yy.zzzz"/> -->
    <!-- 	配置过期时间	 -->
    <!-- <expiry date="2000/01/01" string="EXPIRED!"/> -->
    <!-- 随机命名混淆字符-->
    <property name="random-seed" value="cshxzf jrncbd hh"/>
</config>

5.配置都完成之后,使用maven package 打包,完成之后在target目录下会生成两个jar包,一个是正常的jar包一个是混淆后的jar包
在这里插入图片描述
在这里插入图片描述
6.正常生成之后打开jar包 再使用反编译工具打开class文件查看代码已经被混淆了。

总结: 我这里遇到的几个问题是,因为我是多模块的项目,将配置完成之后发现结果只有starter模块的代码被混淆了,其他的模块的还是原样,网上也搜查了些资料说是在allatori.xml文件里面配置多个模块就可以了,但是最后都给我报错说找不到目标文件,后来也没再继续找下去,我自己的处理方式是在每个模块下面再配置同样的代码,最后每个模块都会生成自己的混淆后的jar包,我最后再将混淆后的jar包 手动丢到start的jar中替换没有混淆的jar包。
不知道大家有没有别的有效的办法 可以share一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
回答: 代码混淆是一种保护项目源码安全性的措施,通过对代码进行混淆,可以防止别人通过反编译项目查看代码。在Spring Boot项目中进行代码混淆时,可能会遇到一些问题。比如,引用中提到ProGuard对于带有前缀的类文件名称识别不了,因此无法混淆。另外,引用中分享了使用Allatori-7.7进行代码混淆的步骤和反编译操作。另外,还可以通过修改Spring的bean命名策略来按类的全限定名来命名,以增加混淆的效果。例如,引用中的代码示例演示了如何修改Spring的bean命名策略。总之,要在Spring Boot项目中进行代码混淆,可以选择合适的工具,并根据项目的具体情况进行相应的配置和操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Spring Boot 2.x系列【27】应用篇之代码混淆](https://blog.csdn.net/qq_43437874/article/details/127964743)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [springboot项目代码混淆和反编译教程·附软件连接](https://blog.csdn.net/weixin_45095396/article/details/121564461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Springboot - 代码混淆](https://blog.csdn.net/trustnature/article/details/121668832)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一名软件修理工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值