SpringBoot2 集成xJar插件 动态解密jar包,避免源码泄露或反编译

文章目录

          • 一、集成
            • 1. 官方介绍地址
            • 2. 添加仓库和插件
            • 3. 编译打包
          • 二、安装go环境和编译
            • 2.1. 安装go
            • 2.2. 编译
          • 三、运行
            • 3.1. 正常运行
            • 3.2. 二次加密运行
            • 3.3. 测试结果
          • 四、IntelliJ IDE 反编译测试
            • 4.1. 将加密的jar进行解压
            • 4.2. 打开解压后的文件夹
            • 4.3. class文件查看
            • 4.4. 配置文件反编译
            • 4.5. xml文件反编译
          • 五、jd-gui 反编译测试
            • 5.1. 没加密的jar效果
            • 5.2. 加密jar的效果
          • 六、XJad反编译测试
            • 6.1. 没加密的jar效果
            • 6.2. 加密的jar效果
          • 七、XJad反编译测试
            • 7.1. 没加密的jar效果
            • 7.2. 加密的jar效果
          • 八、Recaf 反编译
            • 8.1. 没加密的jar
            • 8.2. 加密的jar
          • 九、反编译工具集合分享

一、集成
1. 官方介绍地址

手动加密:https://github.com/core-lib/xjar
maven插件集成:https://github.com/core-lib/xjar-maven-plugin

2. 添加仓库和插件

第一种(不推荐使用)

<project><!-- 设置 jitpack.io 插件仓库 --><pluginRepositories><pluginRepository><id>jitpack.io</id><url>https://jitpack.io</url></pluginRepository></pluginRepositories><!-- 添加 XJar Maven 插件 --><build><plugins><plugin><groupId>com.github.core-lib</groupId><artifactId>xjar-maven-plugin</artifactId><version>4.0.2</version><executions><execution><goals><goal>build</goal></goals><!--可以改成 install--><phase>package</phase><configuration><password>xxxx</password><!-- 需要加密的资源路径表达式 --><includes>         <include>com/zsplat/**</include><include>mapper/*Mapper.xml</include><include>config/**</include></includes><!-- 无需加密的资源路径表达式 --><excludes><exclude>static/**</exclude><exclude>META-INF/**</exclude></excludes><!-- 目标jar存放目录 --><targetDir>${project.build.directory}\xJarDir\</targetDir><!-- 目标jar名称,也可以用表达式(参考官网) --><targetJar>zsplat.jar</targetJar></configuration></execution></executions></plugin></plugins></build>
</project>

第二种(推荐使用):就是把密码配置删除,采用编译打包添加密码会安全些
https://jitpack.io Maven仓库

    <!-- 设置 jitpack.io 插件仓库 --><pluginRepositories><pluginRepository><id>jitpack.io</id><url>https://jitpack.io</url></pluginRepository></pluginRepositories><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!--开源官网:https://github.com/core-lib/xjar-maven-plugin--><plugin><groupId>com.github.core-lib</groupId><artifactId>xjar-maven-plugin</artifactId><version>4.0.2</version><executions><execution><goals><goal>build</goal></goals><phase>package</phase><!-- 或使用<phase>install</phase>--><configuration><excludes><exclude>static/**</exclude><exclude>templates/**</exclude><exclude>resources/**</exclude><exclude>META-INF/resources/**</exclude></excludes><!-- 目标jar存放目录 --><targetDir>${project.build.directory}\xJarDir\</targetDir><!-- 目标jar名称,也可以用表达式(参考官网) --><targetJar>unified-access-center-passwd.jar</targetJar></configuration></execution></executions></plugin></plugins></build>
3. 编译打包

上面xJar插件绑定到指定的 package ,因此每次执行 mvn clean package -Dxjar.password=io.xjar即可自动构建出加密的包,

mvn clean install -Dxjar.password=io.xjar

如下图:
在这里插入图片描述

根目录中 unified-access-center-0.0.1-SNAPSHOT.jar 是未加密的,而 xJarDir 文件夹下的 unified-access-center-passwd.jar 就是加密后的。

注释:
jar包名称可以一样,前提是不在同一个目录中即可,这里jar名称不一样只是为了让大家看得清楚些而已

二、安装go环境和编译

在对应的 xJarDir 文件夹目录编译脚本(go build xjar.go)。在不同的平台进行编译即可得到不同平台的启动器可执行文件,其中Windows下文件名为 xjar.exe 而Linux下为 xjar

2.1. 安装go
  • windows 环境:
    win10安装go开发环境

  • linux环境:
    用于编译的机器需要安装 Go 环境,用于运行的机器则可不必安装 Go 环境
    linux 安装Go环境

2.2. 编译
  • 演示编译windows 环境
cd xJarDir
go build xjar.go

执行成功后,会生成xjar.exe文件
在这里插入图片描述

  • 演示编译环境linux
    上传linux
    在这里插入图片描述
go build xjar.go

在这里插入图片描述

三、运行
3.1. 正常运行
  • windows环境
xjar.exe java -Dfile.encoding=utf-8  --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED -jar  unified-access-center-passwd.jar
  • linux环境
./xjar java -Dfile.encoding=utf-8  --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED -jar  unified-access-center-passwd.jar
3.2. 二次加密运行

声明:如果小伙伴们不需要二次加密,请跳过3.2. 步骤

我的运行方式是这样的,因为我单独对yml文件中的敏感信息进行了二次加密,因此需要添加-Djasypt.encryptor.password=gblfy.com这一段,特别注意点,建议按照我的命令的前后顺序

./xjar java -Dfile.encoding=utf-8 -Djasypt.encryptor.password=gblfy.com -jar  unified-access-center-passwd.jar

如果小伙伴们,也想和我一样对敏感信息二次加密,请移步:
Spring Boot2 集成 jasypt 3.0.4 配置文件敏感信息加密

3.3. 测试结果

目的:这里是先运行保证正常功能无影响,下面会对jar进行反编译测试
在这里插入图片描述

四、IntelliJ IDE 反编译测试
4.1. 将加密的jar进行解压

在这里插入图片描述

4.2. 打开解压后的文件夹

在这里插入图片描述

4.3. class文件查看

在这里插入图片描述

4.4. 配置文件反编译

在这里插入图片描述

4.5. xml文件反编译

在这里插入图片描述

五、jd-gui 反编译测试
5.1. 没加密的jar效果
  • 没加密的jar效果
5.2. 加密jar的效果
  • 加密jar的效果
    说明一下:这里不是我没把文件打开,这是我选中文件双击打开后的效果,小伙伴们可以试试
    在这里插入图片描述
六、XJad反编译测试
6.1. 没加密的jar效果

在这里插入图片描述

6.2. 加密的jar效果

在这里插入图片描述

七、XJad反编译测试
7.1. 没加密的jar效果

在这里插入图片描述

7.2. 加密的jar效果

在这里插入图片描述

八、Recaf 反编译

这里我换了另外一个项目测试看效果

8.1. 没加密的jar

在这里插入图片描述

8.2. 加密的jar

java文件效果
在这里插入图片描述
配置文件效果
在这里插入图片描述

九、反编译工具集合分享

java 反编译工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517227.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过网络地址进行真机调试

开发调试&#xff1a; 1.修改webpack创建的本地的服务器地址为开发的网络地址或者是全网段0.0.0.0 2.调试的时候直接使用配置的地址去访问当前的服务器 3.调式的时候可以直接在手机上查看&#xff0c;如果需要看log&#xff0c;打开chrome进行调试 4.检测到手机后webview调试可…

每秒7亿次请求,阿里新一代数据库如何支撑?

阿里妹导读&#xff1a;Lindorm&#xff0c;就是云操作系统飞天中面向大数据存储处理的重要组成部分。Lindorm是基于HBase研发的、面向大数据领域的分布式NoSQL数据库&#xff0c;集大规模、高吞吐、快速灵活、实时混合能力于一身&#xff0c;面向海量数据场景提供世界领先的高…

拼不过 GO?阿里如何重塑云上的 Java

阿里妹导读&#xff1a;Java 诞生于20年前&#xff0c;拥有大量优秀的企业级框架&#xff0c;践行 OOP 理念&#xff0c;更多体现的是严谨以及在长时间运行条件下的稳定性和高性能。反观如今&#xff0c;在要求快速迭代交付的云场景下&#xff0c;语言的简单性似乎成了首要的要…

centos7 修改默认yum源为国内的阿里云

# 安装wget yum -y install wget# 备份当前的yum源 mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex# echo 新建空的yum源设置目录 mkdir /etc/yum.repos.d# echo 下载阿里云的yum源配置 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Cento…

腾讯云数据库 MySQL 8.0 正式上线,性能全面超越官方版本

7月8日&#xff0c;拥有60全新特性&#xff0c;性能全面超越官方版本的腾讯云MySQL 8.0正式发布。在全新引擎的驱动下&#xff0c;在MySQL官方版本大幅度提升性能的基础上&#xff0c;腾讯云MySQL8.0数据库通过优化锁系统&#xff0c;事务系统等模块&#xff0c;进一步提升性能…

android studio打包纯H5项目(集成5+SDK)

下载地址 http://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/103 我们下载5SDK直接复制demo出来 可以自行修改名字&#xff0c;上面两个dome都可以使用 使用Android Studio打开后 默认目录结构如下 替换HTML文件 找到目录下app/src/main/assets/apps/HelloH5/www…

Apache Flink CEP 实战

本文根据Apache Flink 实战&进阶篇系列直播课程整理而成&#xff0c;由哈啰出行大数据实时平台资深开发刘博分享。通过一些简单的实际例子&#xff0c;从概念原理&#xff0c;到如何使用&#xff0c;再到功能的扩展&#xff0c;希望能够给打算使用或者已经使用的同学一些帮…

docker 加速镜像 阿里云镜像

https://blog.csdn.net/weixin_40816738/article/details/113825637

图神经网络(AliGraph)在阿里巴巴的发展与应用

背景 为什么做GNN? 在大数据的背景下&#xff0c;利用高速计算机去发现数据中的规律似乎是最有效的手段。为了让机器计算的有目的性&#xff0c;需要将人的知识作为输入。我们先后经历了专家系统、经典机器学习、深度学习三个阶段&#xff0c;输入的知识由具体到抽象&#xf…

实用!五款新型 Linux 命令行工具

作者 | Ricardo Gerardi译者 | 弯月&#xff0c;责编 | 屠敏出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;在Linux/Unix系统的日常使用中&#xff0c;我们需要使用很多命令行工具来完成工作&#xff0c;以及理解和管理我们的系统&#xff0c;例如使用du来监视磁盘…

regedit或child_process添加注册表

使用regedit包添加注册表&#xff0c;regedit是对node的子进程模块进行了封装&#xff0c;使得我们不用去写shell脚本或者window命令之类的 安装 npm install --save regedit使用&#xff0c;注意这里我是把作者的vbs目录拷贝到我的项目里了&#xff0c;要不然无法使用&#…

从零开始入门 K8s | 手把手带你理解 etcd

导读&#xff1a;etcd 是用于共享配置和服务发现的分布式、一致性的 KV 存储系统。本文从 etcd 项目发展所经历的几个重要时刻开始&#xff0c;为大家介绍了 etcd 的总体架构及其设计中的基本原理。希望能够帮助大家更好的理解和使用 etcd。 一、etcd 项目的发展历程 etcd 诞生…

minio 单机安装、部署 centos7环境

文章目录一、默认模式下载运行1. 下载2. 访问minio控制台3. 创建目录3. 上传文件二、企业自定义模式2.1. 指定用户密码2.2. 配置目录2.3. 控制台端口2.4. 启动2.5. minio控制台登录2.6. 效果图一、默认模式下载运行 1. 下载 官网地址&#xff1a;https://docs.min.io/docs/ …

Kubernetes 日志查询分析实践

准备工作 为了完成后续的相关操作&#xff0c;我们需要准备一个 K8s 集群&#xff0c;操作步骤如下&#xff1a; 登陆容器服务控制台。创建一个标准托管集群&#xff08;杭州区域&#xff09;&#xff0c;在向导中勾选上【使用 EIP 暴露 API Server】 和【使用日志服务】。集…

“编程能力差,90%是输在这点上!”谷歌AI开发专家:逆袭并没那么难!

Google 人工智能开发者专家彭靖田老师说——超90%的程序员在初学Python 人工智能时&#xff0c;都会遇到下面3个问题&#xff1a;1.想入门人工智能&#xff0c;但不知从何学起&#xff0c;也不知道该选择什么方向...2.Python语法、机器学习/深度学习框架、算法都能看懂&#xf…

移动端调起数字键盘的问题

在做移动端调起数字键盘的时候&#xff0c;碰到了不少的问题&#xff0c;在网上找到了方案&#xff0c;但是却不符合我的要求的&#xff0c;现在总结下: 1.使用input type为number的类型&#xff0c;这种确实可以调起数字键盘&#xff0c;但是存在以下问题&#xff0c;会忽略掉…

这群程序员疯了!他们想成为IT界最会带货的男人

随着网红主播越来越火&#xff0c;通过直播带货种草的形式也成了今年双12的热点。 不过&#xff0c;网红主播带货早已见怪不怪&#xff0c;但你们见过程序员直播带货吗!? 近日&#xff0c;趁着阿里云双12年末采购节&#xff0c;阿里云邀请了一波程序员GG来为大家直播带货&am…

Minio Docker 单机安装(二种模式) linux

文章目录一、默认单机启动1. docker安装启动2. minio 镜像拉取和启动3. minio登录二、minio纠删码模式2.1. 简述2.2. 启动2.3. minio登录2.4. 总览2.5. 上传文件测试一、默认单机启动 1. docker安装启动 # 在线安装docker yum install docker# 启动docker systemctl start do…

阿里巴巴 Service Mesh 落地的架构与挑战

导读&#xff1a;云原生已成为整个阿里巴巴经济体构建面向未来的技术基础设施&#xff0c;Service Mesh 作为云原生的关键技术之一&#xff0c;顺利完成在 双11 核心应用严苛而复杂场景下的落地验证。本文作者将与大家分享在完成这一目标过程中我们所面临和克服的挑战。 部署架…

可能这些是你想要的H5软键盘兼容方案

https://mp.weixin.qq.com/s/ZoKhaFwCzXktveH8a5lhzA