最近在使用classfinal加密springboot,执行成功了,但是反编译后还是能看到源码,很郁闷!
加密之后,反编译还是能看到源码,头疼
我采用的加密方式是插件方式,放上配置
<plugin>
<!-- https://gitee.com/roseboy/classfinal -->
<groupId>net.roseboy</groupId>
<artifactId>classfinal-maven-plugin</artifactId>
<version>${classfinal.version}</version>
<configuration>
<password>#</password><!--加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码-->
<packages>org.springxingyun</packages>
<cfgfiles>application.yml,application-dev.yml,application-prod.yml,application-test.yml</cfgfiles>
<excludes>org.spring</excludes>
<libjars></libjars>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>classFinal</goal>
</goals>
</execution>
</executions>
</plugin>
分析原因1
:org.springxingyun是不是配置的不对,包路径没有配置正确,导致没有加密,改成org.springxingyun.common,org.springxingyun.utils,common和utils包下的源码仍然没有加密成功,看来不是包的问题。
分析原因2
:org.spring过滤的包,把需要加密的包也过滤了,org.spring和org.springxingyun都包含org.spring,如果规则是以配置的路径开头的包路径都屏蔽,那么org.springxingyun是以org.spring开头的,会被屏蔽掉,不进行加密。把改为空,重新打包,生成的加密jar包,重新进行反编译,加密成功。
解决方法
org.spring
要避免packages参数的配置以excludes参数开头,会把需要加密的包屏蔽掉,导致加密失败。
配置参数时,需要注意,切记。
org.springxingyun