如何避免springboot jar包源码泄露以及反编译
近期笔者在为客户做私有云的部署。而这个客户有个特点,喜欢破解。为了防止源码泄漏,决定对jar包进行加密。
Xjar
Xjar基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或反编译。它不需要侵入代码,只需要把编译好的JAR包通过工具加密即可。
引入pom
<dependency>
<groupId>com.github.core-lib</groupId>
<artifactId>xjar</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.20</version>
</dependency>
添加repositories内容,否则可能存在jar导入失败
<repositories>
<repository>
<id>jitpack</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
编写main方法对jar包进行加密
package com.test;
import io.xjar.XCryptos;
public class Test {
public static void main(String[] args) throws Exception {
encrypt();
}
public static void encrypt() throws Exception {
XCryptos.encryption()
// 项目生成的jar
.from("D:\\project\\AIP\\aip-admin\\target\\source.jar")
// 加密的密码
.use("testaa1111122222")
.include("/**/*.class")
.include("/**/*.xml")
.include("/**/*.yml")
.to("D:\\project\\AIP\\temp\\test.jar");
}
}
此时会在指定路径生成test.jar以及xjar.go 文件
安装go环境
test.jar目录下执行go bulid xjar.go,生成xjar.exe
启动项目
window : xjar.exe java -jar test.jar (如果报错,查看报错内容并更正)
linux: nohup ./xjar java -jar test.jar
至此,便完成对spring boot jar包的加密了