jar包加密
1、在启动类的pom.xml中加入classfinal-maven-plugin插件
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>net.roseboy</groupId><artifactId>classfinal-maven-plugin</artifactId><version>1.2.1</version><configuration><password>#</password> <!--启动密码,#为空--><excludes>org.spring</excludes><packages>${groupId}</packages> <!--需要加密的包名,有多个使用逗号分隔--><cfgfiles>application.yml,spy.properties,ehcache.xml</cfgfiles> <!--需要加密的配置文件,有多个使用逗号分隔--><libjars>SuperDog.jar</libjars> <!--jar包lib目录下要加密的jar依赖,有多个使用逗号分隔--><code></code> <!--机器码,指定某个机器启动--></configuration><executions><execution><phase>package</phase><goals><goal>classFinal</goal></goals></execution></executions></plugin></plugins>
</build>
2、在右侧的maven工具栏中使用install,xxx-encrypted.jar是加密后的jar包
3、加密后的jar包不能直接运行,要设置javaagent来启动,启动过程中会解密
//无密码启动
java -javaagent:APF_AssetServer-encrypted.jar -jar APF_AssetServer-encrypted.jar//有密码启动
java -javaagent:APF_AssetServer-encrypted.jar='-pwd=密码' -jar APF_AssetServer-encrypted.jar//增加其他参数启动
java -javaagent:APF_AssetServer-encrypted.jar -jar -Xmx512m -Xms512m APF_AssetServer-encrypted.jar --spring.profiles.active=APF_AssetServer-encrypted
反编译效果
class文件只能看到方法名、参数和注解,方法内容被清空
配置文件变成空白
绑定机器启动
1、下载 classfinal-fatjar-1.2.1.jar
2、执行 java -jar classfinal-fatjar-1.2.1.jar -C
3、将生成的机器码,放到maven插件的code里