如何避免springboot jar包源码泄露以及反编译

createh56个月前 (12-22)技术教程52

近期笔者在为客户做私有云的部署。而这个客户有个特点,喜欢破解。为了防止源码泄漏,决定对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包的加密了

相关文章

Java实现文件上传详细教程,如此简单

实现文件上传,无非是获得数据流,将文件进行处理并保持到硬盘的过程,文件上传是所有网站必不可少的功能。java实现这个功能,由于servlet和jsp没有提供相对应的api,所以程序员自己写个io文件...

不要按照 Java 的方式编写 Rust java 多线程的两种实现方式:____和____。

【CSDN 编者按】停止按照 Java 的方式编写 Rust,这是我发现编写 Rust 代码的乐趣。原文链接:https://jgayfer.com/dont-write-rust-like-java...

Windows 10 下编译 64 位 OpenJDK 8 并单步调试

Windows 10 下编译 64 位 OpenJDK 8 软件版本操作系统:Windows 10Cygwin:3.5.4-1Visual Studio:2010 英文版freetype: 2.7Bo...