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

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

近期笔者在为客户做私有云的部署。而这个客户有个特点,喜欢破解。为了防止源码泄漏,决定对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执行过程和编译原理

专注于Java领域优质技术,欢迎关注作者 | Alan来源 | cnblogs.com/wangjiming/p/10455993.html对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者...

Java 编译速度有多快? java的编译

在 Java 开发中,编译速度一直是程序员关注的一个重要问题。虽然 Java 编译器(javac)本身的编译速度相对较快,但当我们引入构建工具(如 Maven、Gradle 或 Mill)后,编译速度...

1000个字带你一次性搞懂JavaAgent技术,反正我是彻底服了

JavaAgent技术JavaAgent是一种特殊的Java程序,是Instrumentation的客户端。它与普通Java程序通过main方法启动不同,JavaAgent并不是一个可以单独启动的程序...

Java框架 —— MyBatis mybatis框架的优点和特性

MyBatis简介?持久层框架,半自动映射,支持自定义SQL、高级映射、存储过程,免除了JDBC代码、参数设置、获取结果集的工作,可以通过XML或注解方式配置、映射接口,以及实体类在数据库中的记录Hi...