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

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

近期笔者在为客户做私有云的部署。而这个客户有个特点,喜欢破解。为了防止源码泄漏,决定对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 代码编译的3种方式,其中JIT最重要!

通过 Javac 将程序源代码进行编译,转换成 Java 字节码,JVM 通过模板方式把字节码翻译成对应的机器指令,逐条读入,逐条解释翻译,执行速度必然比可执行的二进制字节码程序慢得多。为了提高执行速...

带你入门Java之每日3分钟Java——编写你的第一个Java程序

接着上期带你入门Java之每日3分钟Java——初识Java我们在已经完成Java运行环境配置的前提下,开始着手学习如何编写Java我们的第一个程序。创建第一个Java工程项目首先我们要进入安装好的J...

java编译后出现:类名$1.class和 $2.class

起因:更改了某个类,加了两个java 的comparator比较器,通过内部类的方式实现。因为仅改了一个类所以后面发布的时候就采用增量发布,直接替换.class并重启服务器,之后访问与该类相关接口都会...