如何避免 springboot jar 包源码泄露以及反编译 - 今日头条

本文由 简悦 SimpRead 转码, 原文地址 www.toutiao.com

为了防止源码泄漏,决定对 jar 包进行加密。window : xjar.exe java -jar test.jar。

近期笔者在为客户做私有云的部署。而这个客户有个特点,喜欢破解。为了防止源码泄漏,决定对 jar 包进行加密。

Xjar 基于对 JAR 包内资源的加密以及拓展 ClassLoader 来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或反编译。它不需要侵入代码,只需要把编译好的 JAR 包通过工具加密即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<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>
1
2
3
4
5
6
<repositories>
        <repository>
            <id>jitpack</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 文件

https://p26.toutiaoimg.com/origin/pgc-image/7560fe5b4662419fad4d4e9a6a92fbd2?from=pc

window : xjar.exe java -jar test.jar (如果报错,查看报错内容并更正)

linux: nohup ./xjar java -jar test.jar

至此,便完成对 spring boot jar 包的加密了