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,一经查实,立即删除!

相关文章

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

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

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

阿里妹导读&#xff1a;Java 诞生于20年前&#xff0c;拥有大量优秀的企业级框架&#xff0c;践行 OOP 理念&#xff0c;更多体现的是严谨以及在长时间运行条件下的稳定性和高性能。反观如今&#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;希望能够给打算使用或者已经使用的同学一些帮…

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

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

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

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

从零开始入门 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…

这群程序员疯了!他们想成为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 核心应用严苛而复杂场景下的落地验证。本文作者将与大家分享在完成这一目标过程中我们所面临和克服的挑战。 部署架…

看完这篇 HashMap ,和面试官扯皮就没问题了

来源 | Java 建设者责编 | Carol封图 | CSDN 下载自视觉中国&#xff08;如果你没有时间细抠本文&#xff0c;可以直接看 HashMap 概述&#xff0c;能让你对 HashMap 有个大致的了解&#xff09;HashMap 是 Map 接口的实现&#xff0c;HashMap 允许空的 key-value 键值对&#…

除了快,5G 有哪些关键技术?

阿里妹导读&#xff1a;5G不仅仅只是网速更快&#xff0c;更多的是生活方式的颠覆&#xff0c;对各行各业都会起到催化作用。5G里不仅仅只有大带宽&#xff0c;而是会有很多与B端用户&#xff08;企业&#xff09;相结合的点。接下来&#xff0c;跟阿里大文娱的梓烁一起了解5G的…

聚水潭是如何基于AnalyticDB for PostgreSQL 构筑海量实时数仓平台的

聚水潭数据仓库业务介绍 上海聚水潭网络科技有限公司成立于2014年。聚水潭创建之初&#xff0c;以电商SaaS ERP切入市场&#xff0c;凭借出色的产品和服务&#xff0c;快速获得市场领先地位。随着客户需求的不断变化&#xff0c;如今聚水潭已经发展成为以SaaS ERP为核心&#…

sqlite3的编译和使用

编译环境准备 这个是nw官网的环境搭建教程&#xff0c;一般需要python2.7、visual studio 2013、node-gyp、 node-pre-gyp&#xff0c;环境这块的文章很多自己可以百度http://docs.nwjs.io/en/latest/For Users/Advanced/Use Native%2 0Node%20Modules/ 编译好之后&#xff0…

阿里巴巴的 Kubernetes 应用管理实践经验与教训

导读&#xff1a;本文整理自孙健波在 ArchSummit 大会 2019 北京站演讲稿记录。首先介绍了阿里巴巴基于 Kubernetes 项目进行大规模应用实践过程中遇到的问题&#xff1b;随后会逐一介绍解决这些问题的现有实践及其本身存在的局限性&#xff1b;最后会介绍阿里巴巴目前正在进行…

Minio 分布式集群部署

文章目录一、分布式存储可靠性常用方法1. 概述2. 冗余3. 校验二、分布式Minio优势2.1. 数据保护2.2. 高可用2.3.一致性三、运行分布式Minio3.1. 启动方案简述3.2. 案例说明3.3. 制作分布式启动脚本3.4. 制作伪分布式启动脚本3.5. 登录minio四、分布式Minio负载均衡4.1. nginx安…

数据分析:为什么说Python比Excel更简单高效 ?

日本最大的证券公司之一野村证券首席数字官马修汉普森&#xff0c;在Quant Conference上发表讲话&#xff1a;“用Excel的人越来越少&#xff0c;大家都在用Python。”甚至直接说&#xff1a;“Python已经取代了Excel。”事实上&#xff0c;为了追求更高的效率和质量&#xff0…