当前位置: 首页 > article >正文

使用xjar 对Spring-Boot JAR 包加密运行

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

2 如何使用 xjar v2.06

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

<project>
    <!-- 设置 jitpack.io 仓库 -->
    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>
    <!-- 添加 XJar 依赖 -->
    <dependencies>
        <dependency>
            <groupId>com.github.core-lib</groupId>
            <artifactId>xjar</artifactId>
            <version>v2.0.5</version>
        </dependency>
    </dependencies>
</project>

2.2    自己去maven 下载jar 

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

下载jar

<dependency>
    <groupId>com.github.core-lib</groupId>
    <artifactId>xjar</artifactId>
    <version>v2.0.6</version>
</dependency>
<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-compress</artifactId>
   <version>1.18</version>
</dependency>
<dependency>
    <groupId>com.github.core-lib</groupId>
    <artifactId>loadkit</artifactId>
    <version>v1.0.0</version>
</dependency>
 <dependencies>
        <dependency>
            <groupId>com.github.core-lib</groupId>
            <artifactId>xjar</artifactId>
            <version>v2.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
            <version>1.18</version>
        </dependency>
        <dependency>
        <groupId>com.github.core-lib</groupId>
        <artifactId>loadkit</artifactId>
        <version>v1.0.0</version>
    </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <!-- 用来创建超级JAR包的Maven shade插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

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.key 文件内容为 properties 文件,只需填写两个参数

password: 123456
hold: 1

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 都查看不了, 不知道以后会不会被破解,我把这三个工具都上传到我的百度云盘,有兴趣可以测试一下


http://www.kler.cn/a/444392.html

相关文章:

  • 网络安全的攻防战争
  • 后端使用Spring Boot框架 + 前端VUE 实现滑动模块验证码
  • 【HarmonyOS之旅】DevEco Studio的安装与环境配置
  • android 登录界面编写
  • 高防IP能够为游戏行业提供哪些防护?
  • Service Discovery in Microservices 客户端/服务端服务发现
  • GO OSS 前端直传 Presign
  • 快速解决oracle 11g中exp无法导出空表的问题
  • InnoDB 查询成本
  • 【Leetcode Top 100】105. 从前序与中序遍历序列构造二叉树
  • Python:动态粒子爱心
  • Spring IOC 和 AOP的学习笔记
  • Spring篇--xml方式整合第三方框架
  • linux CentOS系统上卸载docker
  • Android Binder 进程间通信
  • 肝了半年,我整理出了这篇云计算学习路线(新手必备,从入门到精通)
  • Diffusino Policy学习note
  • Unbuntu下怎么生成SSL自签证书?
  • 聊聊开源的虚拟化平台--PVE
  • 02、10个富士胶片模拟的设置
  • 使用 Canal 监听 MySQL Binlog 日志实现最终一致性
  • 《算法SM3》题目
  • 零基础开始学习鸿蒙开发-交友软件页面设计
  • 【开源免费】基于Vue和SpringBoot的靓车汽车销售网站(附论文)
  • 系统移植——Linux 内核顶层 Makefile 详解
  • 谈谈网络流量控制