基本介绍
Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR
基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动, 动态解密运行的方案, 避免源码泄露以及反编译。
功能特性
- 无代码侵入, 只需要把编译好的JAR包通过工具加密即可.
- 完全内存解密, 降低源码以及字节码泄露或反编译的风险.
- 支持所有JDK内置加解密算法.
- 可选择需要加解密的字节码或其他资源文件.
- 支持Maven插件, 加密更加便捷.
- 动态生成Go启动器, 保护密码不泄露.
环境依赖
JDK 1.7 +
Go环境
使用步骤
1. 添加依赖
<project>
<!-- 设置 jitpack.io 仓库 -->
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
</project>
- 必须添加 https://jitpack.io Maven仓库。
2. 插件集成
随着Maven构建自动生成加密后的JAR和Go启动器源码文件。
xjar-maven-plugin GitHub: https://github.com/core-lib/xjar-maven-plugin
<project>
<!-- 设置 jitpack.io 插件仓库 -->
<pluginRepositories>
<pluginRepository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</pluginRepository>
</pluginRepositories>
<!-- 添加 XJar Maven 插件 -->
<build>
<plugins>
<plugin>
<groupId>com.github.core-lib</groupId>
<artifactId>xjar-maven-plugin</artifactId>
<version>4.0.2</version>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
<phase>install</phase>
<configuration>
<!-- 目标jar名称 -->
<targetJar>${project.build.finalName}-encrypted.jar</targetJar>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
3. 打包(指定jar包加密密码)
mvn clean package -Dxjar.password=XXX
打包后的文件如下:
4. 安装go环境
下载地址:https://golang.google.cn/dl/
5. 生成启动器可执行文件
go build xjar.go
- 将 xjar.go 在不同的平台进行编译即可得到不同平台的启动器可执行文件, 其中Windows下文件名为 xjar.exe 而Linux下为 xjar.
6. 启动运行
/path/to/xjar java -jar /path/to/encrypted.jar
nohup /path/to/xjar java -jar /path/to/encrypted.jar
- 在 Java 启动命令前加上编译好的Go启动器可执行文件名(xjar)即可启动运行加密后的JAR包.
- 若使用 nohup 方式启动则 nohup 要放在Go启动器可执行文件名(xjar)之前.
- 若Go启动器可执行文件名(xjar)不在当前命令行所在目录则要通过绝对路径或相对路径指定.
- 仅支持通过 -jar 方式启动, 不支持-cp或-classpath的方式.
- -jar 后面必须紧跟着启动的加密jar文件路径