• SpringBoot中使用XJar进行JAR安全加密运行同时支持原生JAR


    SpringBoot中使用XJar进行JAR安全加密运行同时支持原生JAR


    一、简介

    Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR.
    基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动, 动态解密运行的方案, 避免源码泄露以及反编译.

    功能特性
    无代码侵入, 只需要把编译好的JAR包通过工具加密即可.
    完全内存解密, 降低源码以及字节码泄露或反编译的风险.
    支持所有JDK内置加解密算法.
    可选择需要加解密的字节码或其他资源文件.
    支持Maven插件, 加密更加便捷.
    动态生成Go启动器, 保护密码不泄露.

    官网:
    GitHub: https://github.com/core-lib/xjar
    Gitee: https://gitee.com/mirrors/XJar

    二、使用

    1.添加依赖

    <project>
        <!-- 设置 jitpack.io 仓库 -->
        <repositories>
            <repository>
                <id>jitpack.io</id>
                <url>https://jitpack.io
            </repository>
        </repositories>
        <!-- 添加 XJar 依赖 -->
        <dependencies>
            <dependency>
                <groupId>com.github.core-lib</groupId>
                <artifactId>xjar</artifactId>
                <version>4.0.2</version>
                <!-- <scope>test</scope> -->
            </dependency>
        </dependencies>
    </project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    必须添加 https://jitpack.io Maven仓库.
    如果使用 JUnit 测试类来运行加密可以将 XJar 依赖的 scope 设置为 test.

    2.加密源码

    package cn.gzsendi.modules.liutests;
    
    import org.junit.Test;
    
    import io.xjar.XCryptos;
    
    /**
     * Xjar
     * 参考文档:https://gitee.com/mirrors/XJar
     * @author liujh
     */
    public class XjarTest {
    	
    	@Test
    	public void test() throws Exception{
    		
    	    XCryptos.encryption()
            .from("D:/temp/springbootLiuTest.jar")//指定待加密JAR包路径
            .use("123456")//指定加密密码
            //.include("/io/xjar/**/*.class")//指定要加密的资源相对于classpath的正则路径表达式
            //.include("/mapper/**/*Mapper.xml")//指定要加密的资源相对于classpath的正则路径表达式
            //.exclude("/static/**/*")//指定不加密的资源相对于classpath的正则路径表达式
            .exclude("/*.yml")//指定不加密的资源相对于classpath的正则路径表达式
            .exclude("/*.xml")
            .to("D:/temp/springbootLiuTestEncode.jar");
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    注:include 和 exclude 同时使用时即加密在include的范围内且排除了exclude的资源.

    3.Go环境准备

    Go环境安装文件下载地址:https://go.dev/dl/

    #下载Go安装文件与解压
    wget https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz
    tar zxvf go1.12.4.linux-amd64.tar.gz  -C /usr/local
     
    #编辑/etc/profile文件添加如下:
    #go setting
    export GOROOT=/usr/local/go
    export GOPATH=/usr/local/gopath
    export PATH=$PATH:$GOROOT/bin
    source /etc/profile 生效
    
    #验证go环境准备:
    go version
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4.编译脚本

    go build xjar.go
    
    • 1

    通过步骤2加密成功后XJar会在输出的JAR包同目录下生成一个名为 xjar.go 的的Go启动器源码文件.
    将 xjar.go 在不同的平台进行编译即可得到不同平台的启动器可执行文件, 其中Windows下文件名为 xjar.exe 而Linux下为 xjar.
    由于启动器自带JAR包防篡改校验, 故启动器无法通用, 即便密码相同也不行.

    5.启动运行

    /path/to/xjar /path/to/java [OPTIONS] -jar /path/to/encrypted.jar [ARGS]
    /path/to/xjar /path/to/javaw [OPTIONS] -jar /path/to/encrypted.jar [ARGS]
    nohup /path/to/xjar /path/to/java [OPTIONS] -jar /path/to/encrypted.jar [ARGS]
    
    #示例:
    ./xjar java -jar springbootLiuTestEncode.jar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    仅支持通过 -jar 方式启动, 不支持-cp或-classpath的方式.
    -jar 后面必须紧跟着启动的加密jar文件路径

    其他问题及内容参考:https://gitee.com/mirrors/XJar

    以上介绍即为XJar的使用,希望对你有帮助.

  • 相关阅读:
    Docker系列第02部分:Docker安装与启动
    全球汽车安全气囊芯片总体规模分析
    Express模板引擎
    软件测试(测试用例攻略)—写用例无压力
    【番杰的小技巧笔记】如何通过嘉立创免费打印立创EDA设计的PCB
    UI自动化 --- 微软UI Automation
    说出你常用的20个linux命令,你还是只会说ls、cat那20个命令吗?3分钟让你发现新大陆
    Docker 镜像构建可以分享的快乐
    C/C++语言100题练习计划 83——背包问题(贪心算法实现)
    Linux系统编程系列之进程间通信-消息队列
  • 原文地址:https://blog.csdn.net/jxlhljh/article/details/126662285