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

createh55个月前 (12-22)技术教程38

近期笔者在为客户做私有云的部署。而这个客户有个特点,喜欢破解。为了防止源码泄漏,决定对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编译后出现:类名$1.class和 $2.class

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

Java构建和发布工具jDeploy java 构建工具

Java语言在设计之初就提出了“一次编写,到处运行”的口号。但是理想很丰满,现实很骨感,实际上Java经过这么多年的发展其易用性也不是很让人满意,其运行环境的配置也颇为坎坷。本文虫虫给大家介绍一款Ja...

Java反编译工具 java反编译工具并修改代码

编译和反编译编程语言分成高级语言和低级语言。低级语言如机器语言、汇编语言。这类语言直接用计算机指令编写命令,不需要编译。这些语言机器能看到懂,但是程序员读起来很费劲。而我们平时经常用的语言C、Java...