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

embedded/2024/12/21 18:01:19/

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

jar%20v2.06" style="background-color:transparent;">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>

jar%C2%A0">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>

jar%20%E8%BF%9B%E8%A1%8C%E5%8A%A0%E5%AF%86%E6%93%8D%E4%BD%9C" style="background-color:transparent;">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

java%20%E5%8F%8D%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7">5 java 反编译工具

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


http://www.ppmy.cn/embedded/147591.html

相关文章

C++对象数组对象指针对象指针数组

一、对象数组 对象数组中的每一个元素都是同类的对象&#xff1b; 例1 对象数组成员的初始化 #include<iostream> using namespace std;class Student { public:Student( ){ };Student(int n,string nam,char s):num(n),name(nam),sex(s){};void display(){cout<&l…

C++三大函数

三大函数&#xff1a;拷贝构造、拷贝赋值、析构 只要你的类带有指针&#xff0c;则一定不能用编译器给的默认拷贝函数 拷贝构造函数用于创建新对象并初始化。 MyList<int> mylistCopy *mylistPtr; // 通过拷贝构造函数创建新对象 拷贝赋值运算符用于将一个已存在对象的值…

图书馆管理系统(二)基于jquery、ajax

单元三 页面搭建及功能实现 学习目标 该部分就是我们最重要的一部分&#xff0c;现在开始进行页面搭建&#xff0c;并完成一些功能的实现等等&#xff0c;最后整合完成该项目的制作。 任务3.1 登录页面 任务描述 这个任务我们将进行登录页的搭建&#xff0c;以及使用AJAX在…

python elasticsearch_dsl PIT Point in time API 查询

默认情况下&#xff0c;搜索请求针对目标索引的最新可见数据&#xff08;称为时间点&#xff09;执行。elasticsearchpit&#xff08;时间点&#xff09;是一种轻量级视图&#xff0c;可以查看数据在启动时的状态。在某些情况下&#xff0c;最好使用同一时间点执行多个搜索请求…

Excel技巧:使用PowerQuery批量提取文件名

前面给大家分享了简单的excel提取文件名方法&#xff0c;今天继续分享&#xff0c;进阶版excel文件批量提取文件名的方法。 点击excel工具栏中的【数据】功能&#xff0c;点击获取数据 – 来自文件 – 从文件夹 然后找到需要提取文件名的文件夹&#xff0c;点击打开&#xff0…

正则表达式入门教程

正则表达式入门教程 1. 引言 正则表达式(Regular Expression,简称Regex)是一种用于处理字符串的强大工具,它允许用户通过特定的模式(pattern)来搜索、匹配、查找和替换文本中的数据。正则表达式在文本处理、数据验证、数据提取等领域有着广泛的应用。本教程将带你了解正…

视频及JSON数据的导出并压缩

npm下载安装 jszip 和 file-saver 这两个库来实现文件的压缩和保存功能&#xff1a; npm install jszip npm install file-saver 导入依赖库&#xff1a; import JSZip from jszip; import { saveAs } from file-saver; 方法实现&#xff1a; batchDownload() {const zip…

硬件之DCDC开关电源

一、BUCK降压原理&#xff08;重点&#xff09; 1、这里其实就是开关S不停的通断&#xff0c;形成PWM波 2、L电感&#xff0c;电容C和续流二极管之间形成回路&#xff0c;这样就可以输出想要的电压了 假设PWM的电压为15V&#xff0c;经过续流回路之后就会输出5V 二、选型 1、…