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

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

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

目录

文档

使用

机器绑定

maven插件方式使用

启动加密后的jar


文档

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

使用

机器绑定

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

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

bash 复制代码
java -jar classfinal-fatjar-1.2.1.jar -C

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

maven插件方式使用

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

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

XML 复制代码
<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

示例:

bash 复制代码
java -javaagent:selenium-manager-encrypted.jar -jar selenium-manager-encrypted.jar

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

相关推荐
计算机学姐12 分钟前
基于微信小程序的网上订餐管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·intellij-idea
HackKong2 小时前
2025年黑客技术之网络安全简介(入门篇)
安全·web安全·网络安全·黑客技术
秋野酱6 小时前
如何在 Spring Boot 中实现自定义属性
java·数据库·spring boot
安的列斯凯奇7 小时前
SpringBoot篇 单元测试 理论篇
spring boot·后端·单元测试
旭华智能9 小时前
智慧脚下生根,智能井盖监测终端引领城市安全新革命
安全
多则惑少则明9 小时前
SSM开发(一)JAVA,javaEE,spring,springmvc,springboot,SSM,SSH等几个概念区别
spring boot·spring·ssh
Swift社区9 小时前
【分布式日志篇】从工具选型到实战部署:全面解析日志采集与管理路径
人工智能·spring boot·分布式
专职10 小时前
spring boot中实现手动分页
java·spring boot·后端
m0_7482463511 小时前
SpringBoot返回文件让前端下载的几种方式
前端·spring boot·后端
m0_7482304411 小时前
创建一个Spring Boot项目
java·spring boot·后端