利用classfinal-maven-plugin对jar进行加密,防止反编译
背景:将jar包部署到其他服务器,如何保证自己的jar不会被反编译解密
一、如何打包成加密的jar
1、在pom文件中,添加这两项
A、
<dependency>
<groupId>net.roseboy</groupId>
<artifactId>classfinal-maven-plugin</artifactId>
<version>1.2.1</version>
</dependency>
B、
<plugin>
<!--
【1】加密后,方法体被清空,保留方法参数、注解等信息;是为了兼容spring、swagger等扫描注解的框架
【2】方法体被清空后,反编译者只看到方法名和注解,看不到方法的具体内容
【3】加密后的项目需要设置javaagent来启动,启动过程中解密class,完全内存解密,不留下任何解密后的文件
【启动加密的Jar】: 生成 xxx-encrypted.jar,这个就是加密后的jar文件:加密后的文件不可执行
无密码:需要java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar
有密码:java -javaagent:xxx -encrypted.jar = '-pwd 000000' -jar xxx-encrypted.jar
-->
<groupId>net.roseboy</groupId>
<artifactId>classfinal-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<password>#</password> <!--加密密码,如果是#号,则使用无密码模式加密-->
<packages>com.bk</packages> <!--加密的包名(可为空,多个用“,”分割)-->
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>classFinal</goal>
</goals>
</execution>
</executions>
</plugin>
这样打包出来的jar,反编译看到class文件,不能看到方法体里面的内容,只能看到方法名称

二、如何运行加密的jar
java -javaagent:D:\custom-server\test-server-1.0.0.jar -jar D:\custom-server\test-server-1.0.0.jar

浙公网安备 33010602011771号