使用 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

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

相关推荐
自小吃多16 小时前
电气安全检测说明书
笔记·安全
ShineWinsu16 小时前
Chrome安全机制深度解析技术文章
前端·chrome·安全
yeanhoo17 小时前
基于 Wazuh + Sysmon 部署 SOC
安全
程序员 沐阳17 小时前
从内容管控到硬件隔离:Chrome 安全防护体系深度拆解
前端·chrome·安全
小陈工17 小时前
2026年4月5日技术资讯洞察:AI商业模式变革、知识管理革命与开源生态反击
开发语言·人工智能·python·安全·oracle·开源
Xudde.17 小时前
班级作业笔记报告0x09
笔记·学习·安全·web安全·php
indexsunny17 小时前
互联网大厂Java面试实录:Spring Boot到微服务的深入探讨
java·spring boot·微服务·面试·eureka·kafka·jwt
hzxpaipai17 小时前
外贸网站制作:为何派迪科技做的网站性能与打开速度如此不错?
开发语言·前端·网络·科技·安全
正在努力的网络架构师17 小时前
安全服务:WAF/HSS
安全·云网络
m0_7381207217 小时前
渗透基础知识ctfshow——Web应用安全与防护(第二章)
服务器·前端·安全·web安全·php