背景:将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
标签:反编译,plugin,jar,server,maven,classfinal From: https://www.cnblogs.com/wwssgg/p/18517792