使用xjar 对Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译

目录

1 Xjar 介绍

2 如何使用 xjar v2.06

2.1 导入pomx (可以的话直接看3)  不行接着往下 2.2 

2.2    自己去maven 下载jar 

2.3  跳过2.1 的废话,直接下载 xjar  和  loadkit 包,并且安装到本地

3 编写代码对已有spring boot jar 进行加密操作

4 懒人方案

5 java 反编译工具


1 Xjar 介绍

Spring Boot JAR 安全加密运行工具,同时支持的原生JAR。
基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或反编译。
功能特性
无需侵入代码,只需要把编译好的JAR包通过工具加密即可。
完全内存解密,杜绝源码以及字节码泄露或反编译。
支持所有JDK内置加解密算法。
可选择需要加解密的字节码或其他资源文件,避免计算资源浪费。

官方文档地址:   https://github.com/core-lib/xjar

2 如何使用 xjar v2.06

2.1 导入pomx (可以的话直接看3)  不行接着往下 2.2 


    
    
        
            jitpack.io
            https://jitpack.io
        
    
    
    
        
            com.github.core-lib
            xjar
            v2.0.5
        
    

2.2    自己去maven 下载jar 

https://mvnrepository.com/artifact/com.github.core-lib/xjar/v2.0.6

下载jar

使用xjar 对Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译_第1张图片

将xjar安装到本地仓库, 执行maven 命令  修改xjar文件路径

mvn install:install-file -Dfile=G:/xjar-v2.0.6.jar  -DgroupId=com.github.core-lib -DartifactId=xjar -Dversion=v2.0.6 -Dpackaging=jar

引入maven 


    com.github.core-lib
    xjar
    v2.0.6

很遗憾的告诉你,你可能回遇到异常

使用xjar 对Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译_第2张图片

 缺少jar包, 我怎末知道的呢,  感谢有百度,继续添加一下maven 

        
            org.apache.commons
            commons-compress
            1.18
        

还是回遇到异常,心态崩了,  只能接着问问度娘了,

使用xjar 对Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译_第3张图片

发现还是缺少jar 包,loadkit

https://mvnrepository.com/artifact/com.github.core-lib/loadkit/v1.0.0

使用xjar 对Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译_第4张图片

如果开始的xjar 你引入不了, 这个应该你也引入不了, 只能手动下载 安装到本地仓库了

mvn install:install-file -Dfile=G:/loadkit-v1.0.0.jar  -DgroupId=com.github.core-lib -DartifactId=loadkit -Dversion=v1.0.0 -Dpackaging=jar


    com.github.core-lib
    loadkit
    v1.0.0

好了,到这坑都踩完了, 下面是完整的pom文件

2.3  跳过2.1 的废话,直接下载 xjar  和  loadkit 包,并且安装到本地

mvn install:install-file -Dfile=G:/loadkit-v1.0.0.jar  -DgroupId=com.github.core-lib -DartifactId=loadkit -Dversion=v1.0.0 -Dpackaging=jar

mvn install:install-file -Dfile=G:/xjar-v2.0.6.jar  -DgroupId=com.github.core-lib -DartifactId=xjar -Dversion=v2.0.6 -Dpackaging=jar

 
        
            com.github.core-lib
            xjar
            v2.0.6
        
        
            org.apache.commons
            commons-compress
            1.18
        
        
        com.github.core-lib
        loadkit
        v1.0.0
    
    

    
        
            
            
                org.apache.maven.plugins
                maven-shade-plugin
                2.3
                
                    
                        package
                        
                            shade
                        
                        
                            
                                
                                    *:*
                                    
                                        META-INF/*.SF
                                        META-INF/*.DSA
                                        META-INF/*.RSA
                                    
                                
                            
                        
                    
                
            
        
    

3 编写代码对已有spring boot jar 进行加密操作

    public static void main(String[] args) throws Exception {
       // Spring-Boot Jar包加密
        String password = "123456";
        XKey xKey = XKit.key(password);
        XBoot.encrypt("C:/Users/Lenovo/Desktop/webapp.jar", "C:/Users/Lenovo/Desktop/webapp-xjar.jar", xKey, XConstants.MODE_DANGER);
        System.out.println("Successfully generated encrypted jar");
    }

本地启动,需要输入密码才可以, 

 

// 危险加密模式,即不需要输入密码即可启动的加密方式,这种方式META-INF/MANIFEST.MF中会保留密钥,请谨慎使用!
String password = "io.xjar";
XKey xKey = XKit.key(password);
XBoot.encrypt("/path/to/read/plaintext.jar", "/path/to/save/encrypted.jar", xKey, XConstants.MODE_DANGER);

// Spring-Boot Jar包解密
String password = "io.xjar";
XKey xKey = XKit.key(password);
XBoot.decrypt("/path/to/read/encrypted.jar", "/path/to/save/decrypted.jar", xKey);

启动方式

   // 命令行运行JAR 然后在提示输入密码的时候输入密码后按回车即可正常启动
java -jar /path/to/encrypted.jar

// 也可以通过传参的方式直接启动,不太推荐这种方式,因为泄露的可能性更大!
java -jar /path/to/encrypted.jar --xjar.password=PASSWORD

// 对于 nohup 或 javaw 这种后台启动方式,无法使用控制台来输入密码,推荐使用指定密钥文件的方式启动
nohup java -jar /path/to/encrypted.jar --xjar.keyfile=/path/to/xjar.key      > nohup.out 2>&1 & 


使用xjar 对Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译_第5张图片

xjar.key 文件内容为 properties 文件,只需填写两个参数

password: 123456
hold: 1

使用xjar 对Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译_第6张图片

感觉他的加密方式,应该是让xjar 使用自定义的类加载器,去将所有的类进行单独的类加载

4 懒人方案

如果你只是需要对jar 进行加密操作,可以直接使用我的jar

https://github.com/yumingzhu/xjarDemo

下载target目录下的xjarDemo-1.0-SNAPSHOT.jar,

执行一下命令后面三个参数,分别为,加密的密码,jar包,加密后生成的jar包

java -cp xjarDemo-1.0-SNAPSHOT.jar  XjarDemo  123456 C:/Users/Lenovo/Desktop/webapp.jar   C:/Users/Lenovo/Desktop/webapp-xjar.jar

5 java 反编译工具

  我使用了  jd,luyten xJad  三个工具, 正常反编译的jar 都可以得到代码, 用xjar 加密的 spring boot jar 都查看不了, 不知道以后会不会被破解,我把这三个工具都上传到我的百度云盘,有兴趣可以测试一下,  

链接:https://pan.baidu.com/s/1yQa3ZEfQQ0ne_oL4yzChmQ 
提取码:0sm5

你可能感兴趣的:(xjar,源码分析)