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

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

相关推荐

  1. 使用jsencrypt在web前端字符串进行Ras加密

    2024-01-19 10:06:01       25 阅读
  2. rust - 文件进行zip压缩加密

    2024-01-19 10:06:01       46 阅读
  3. rust - 文件夹进行zip压缩加密

    2024-01-19 10:06:01       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-19 10:06:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-19 10:06:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-19 10:06:01       82 阅读
  4. Python语言-面向对象

    2024-01-19 10:06:01       91 阅读

热门阅读

  1. 代码随想录算法训练营29期Day23|LeetCode 669,108,538

    2024-01-19 10:06:01       59 阅读
  2. Day31- 贪心算法part05

    2024-01-19 10:06:01       59 阅读
  3. 理解pytorch系列:transpose是怎么实现的

    2024-01-19 10:06:01       53 阅读
  4. c++ 指针的初始化

    2024-01-19 10:06:01       55 阅读
  5. GitHub Copilot 的使用方法和快捷键

    2024-01-19 10:06:01       80 阅读
  6. JDBC数据库连接池

    2024-01-19 10:06:01       62 阅读
  7. MySQL查询条件OR导致模糊查询失效

    2024-01-19 10:06:01       58 阅读
  8. Linux的strace工具使用

    2024-01-19 10:06:01       55 阅读
  9. clickhouse安装及简单使用

    2024-01-19 10:06:01       83 阅读
  10. VSCode !+tab补全失效解决方法

    2024-01-19 10:06:01       61 阅读
  11. Visual Studio Code 1.67调整文件嵌套、Markdown导航

    2024-01-19 10:06:01       60 阅读