使用 ClassFinal 对SpringBoot jar加密加固并进行机器绑定

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!如果我的博客对你有帮助,欢迎进行评论✏️✏️、点赞👍👍、收藏⭐️⭐️,满足一下我的虚荣心💖🙏🙏🙏 。

为避免源码泄漏或字节码被反编译,这里记录一下使用 ClassFinal 对jar包进行加壳加固。

目录

文档

使用

机器绑定

maven插件方式使用

启动加密后的jar


文档

官网地址:ClassFinal: Java字节码加密工具

使用

机器绑定

生成机器码前先从Gitee下载好classfinal-fatjar-1.2.1.jar。

机器绑定只允许加密的项目在特定的机器上运行,在需要绑定的机器上执行以下命令,生成机器码:

java -jar classfinal-fatjar-1.2.1.jar -C

生成的机器码存放在同classfinal-fatjar-1.2.1.jar目录中的classfinal.txt文件中,如下:

maven插件方式使用

官网介绍的使用方式有两种,这里记录下 maven插件方式,

在要加密的项目pom.xml中加入以下插件配置,目前最新版本是:1.2.1。

<plugin><!-- https://gitee.com/roseboy/classfinal --><groupId>net.roseboy</groupId><artifactId>classfinal-maven-plugin</artifactId><version>1.2.1</version><configuration><password>123456</password><!--加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码--><packages>com.ruoyi</packages><cfgfiles>*.yml</cfgfiles><excludes>org.spring</excludes><code>CA5800E403C341E1D2738A951EF553B6D41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E</code>
<!--                    <libjars>a.jar,b.jar</libjars>--></configuration><executions><execution><phase>package</phase><goals><goal>classFinal</goal></goals></execution></executions></plugin>

参数说明:

参数说明
-file        加密的jar/war完整路径
-packages    加密的包名(可为空,多个用","分割)
-libjars     jar/war包lib下要加密jar文件名(可为空,多个用","分割)
-cfgfiles    需要加密的配置文件,一般是classes目录下的yml或properties文件(可为空,多个用","分割)
-exclude     排除的类名(可为空,多个用","分割)
-classpath   外部依赖的jar目录,例如/tomcat/lib(可为空,多个用","分割)
-pwd         加密密码,如果是#号,则使用无密码模式加密
-code        机器码,在绑定的机器生成,加密后只可在此机器上运行
-Y           无需确认,不加此参数会提示确认以上信息

执行打包命令后会在target目录下生成加密后的jar包,格式为:

yourpaoject-encrypted.jar
启动加密后的jar

加密后的项目需要设置javaagent来启动,项目在启动过程中解密class,完全内存解密,不留下任何解密后的文件,启动命令如下:

java -javaagent:yourpaoject-encrypted.jar -jar yourpaoject-encrypted.jar

示例: 

java -javaagent:selenium-manager-encrypted.jar -jar selenium-manager-encrypted.jar

启动时按照其实输入密码即可启动:

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

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

相关文章

RabbitMQ扩展

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 RabbitMQ扩展 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、高级特性消费端限流不公…

【正点原子STM32】初识STM32(芯片分类、资料下载、命名规则、选型)

一、STM32是什么 二、STM32芯片分类 三、STM32命名规则 四、STM32选型 五、总结 一、STM32是什么 STM32是STMicroelectronics&#xff08;意法半导体&#xff09;公司推出的一系列32位的嵌入式系统微控制器&#xff08;Microcontroller Unit&#xff0c;MCU&#xff09;产品。…

ThinkPHP6如何轻松集成缓存技术?

随着网络技术的不断发展&#xff0c;缓存技术已经成为了现代化网站、应用开发中必不可少的一项技术。ThinkPHP作为国内最为流行的PHP开发框架之一&#xff0c;在其最新版本ThinkPHP6中&#xff0c;已经集成了多种缓存技术。本文将介绍ThinkPHP6集成缓存技术的实践&#xff0c;让…

网络安全 | 苹果承认 GPU 安全漏洞存在,iPhone 12、M2 MacBook Air 等受影响

1 月 17 日消息&#xff0c;苹果公司确认了近期出现的有关 Apple GPU 存在安全漏洞的报告&#xff0c;并承认 iPhone 12 和 M2 MacBook Air 受影响。 该漏洞可能使攻击者窃取由芯片处理的数据&#xff0c;包括与 ChatGPT 的对话内容等隐私信息。 安全研究人员发现&#xff0c;…

策略模式在工作中的运用

前言 在不同的场景下&#xff0c;执行不同的业务逻辑&#xff0c;在日常工作中是很寻常的事情。比如&#xff0c;订阅系统。在收到阿里云的回调事件、与收到AWS的回调事件&#xff0c;无论是收到的参数&#xff0c;还是执行的逻辑都可能是不同的。为了避免&#xff0c;每次新增…

零售的数字化转型,利用AWS云服务资源如何操作?

国内市场趋于饱满&#xff0c;各行各业的发展接近瓶颈&#xff0c;就连零售行业都竞争激烈&#xff0c;随处可见的零售小店也预示着需要投入大量的人力&#xff0c;而且由于消费者的行为和预期已经发生了根本性变化&#xff0c;这迫使零售商不得不加速整个价值链的数字化转型&a…

在rk3568上执行/usr/bin/QLauncher,报错

环境&#xff1a;rk3568 Linux buildroot系统&#xff0c;接mipi屏幕。 执行/usr/bin/QLauncher报错如下&#xff1a; rootrk3568-buildroot:/# /usr/bin/QLauncher Failed to create wl_display (No such file or directory) qt.qpa.plugin: Could not load the Qt platform …

js构造继承是什么缺点和优点

构造继承是一种继承方式&#xff0c;通过使用构造函数来实现继承。在JavaScript中&#xff0c;构造继承是最早的继承方式之一&#xff0c;但随着ES6引入了类和基于类的继承方式&#xff0c;构造继承的应用逐渐减少。 构造继承的优点&#xff1a; 简单易用&#xff1a;构造继承…

java基础算法之堆排序算法

堆排序是一种将顺序存储二叉树转化为大顶堆或者小顶堆的排序算法。顺序存储二叉树是一种特殊的二叉树存储方式&#xff0c;它将二叉树的节点按照一定的逻辑顺序存储在一个数组中&#xff0c;以便快速访问节点。大顶堆&#xff1a;父节点的值大于或等于其子节点的值的树&#xf…

Flutter 缩放动画组件封装与使用

在 Flutter 中&#xff0c;动画是为了提升用户体验而不可或缺的一部分。在应用程序中&#xff0c;缩放动画是常用的一种交互效果&#xff0c;可以使界面元素在用户交互时具有生动感。为了更好地组织代码和提高复用性&#xff0c;我们可以封装一个缩放动画组件&#xff0c;以下是…

Java中List接口两个实现,ArrayList类和LinkedList类的常用方法(一)

List接口 要了解List接口&#xff0c;就不得不说起Java的集合框架。 &#xff08;该图来自菜鸟教程&#xff09; Collection接口和Map接口 Java 集合框架主要包括两种类型的容器&#xff0c;集合Collection和图Map。 Collection接口代表了单列集合&#xff0c;它包含了一组…

1月下半笔记(个人向)

最近才开始看d2l&#xff08;这种东西早该在两年前看的&#xff0c;拖到现在了&#xff09; 为了做项目还得学一手OpenGL&#xff08;被windows安装GLFW逼疯了&#xff09; 1.15 打完ICPC EC final回来&#xff0c;也许可以出一篇博客写下简单的题解。 对蛋白质相似空间子结…

如何获取一个德国容器

1.注册discord账号 discord注册网址&#xff1a;https://discord.com/ 下面是容器的discord邀请链接 https://discord.com/Discord邀请链接&#xff1a;https://discord.com/invite/jVMSWrchC4 2.进入discord群聊点击link 在点击网址&#xff0c;这个网址每星期都会变就是图…

Docker容器添加映射端口

方式一 简单粗暴&#xff08;需要等一段时间&#xff09; 直接给现在容器停了&#xff08;当然你要不想停也可以&#xff0c;只是打包会慢一点&#xff0c;当然我是没出意外&#xff0c;如果你怕出现特殊情况&#xff0c;那就先把容器停了&#xff09;&#xff0c;然后把这个容…

得实云打印助力CRM和电商平台高效无代码集成

简化打印流程&#xff0c;实现无缝连接 得实云打印提供的无缝连接体验&#xff0c;特别适合电商平台和客户服务系统。无需担忧传统打印设备的连接问题&#xff0c;得实云打印通过其API让用户能够轻松实现订单打印、物流单据打印等功能。通过得实的技术&#xff0c;用户能够随时…

C语言总结十三:程序环境和预处理详细总结

了解程序的运行环境可以让我们更加清楚的程序的底层运行的每一个步骤和过程&#xff0c;做到心中有数&#xff0c;预处理阶段是在预编译阶段完成&#xff0c;掌握常用的预处理命令语法&#xff0c;可以让我们正确的使用预处理命令&#xff0c;从而提高代码的开发能力和阅读别人…

图像处理中,采用极线约束准则来约束特征点匹配搜索空间,理论上在极线上进行搜索。这里的极线是什么线,怎么定义的?基本矩阵F和本质矩阵E有什么区别?

问题描述&#xff1a;图像处理中&#xff0c;采用极线约束准则来约束特征点匹配搜索空间&#xff0c;理论上在极线上进行搜索。这里的极线是什么线&#xff0c;怎么定义的&#xff1f;基本矩阵F和本质矩阵E有什么区别&#xff1f; 问题1解答&#xff1a; 极线是通过极线几何学…

qt-c++多窗口编程

1、QMessageBox 消息对话框 QMessageBox继承自QDialog&#xff0c;显示一个模态对话框。用于用户前台信息通知或询问用户问题&#xff0c;并且接收问题答案。 QDialog再Qt源码中&#xff0c;派生类往往都是一些在特定场合下使用的预设好的对话框窗口。这些窗口无需创建对象&…

蓝凌EIS智慧协同平台frm_form_upload.aspx接口存在任意文件上传漏洞

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 蓝凌EIS智慧协同平台frm_form_upload.aspx接…

【QA】Linux-CentOS-解决mysqlclient无法安装

文章目录 文章概述解决方式1&#xff1a;直接找到mysqlclient的whl安装包python3.8-x86-64位其他适配版本的whl安装包 解决方法2&#xff1a;先安装相关依赖&#xff0c;再单独安装mysqlclient解决方式3&#xff1a;根据错误信息找到根源&#xff0c;一步一步解决 文章概述 li…