【使用 ClassFinal 对 java class 文件进行加密防止反编译】

1.准备工作

下载classfinal-fatjar.jar 或者 下载classFinal源码

源码打包生成 classfinal-fatjar-1.2.1.jar:
gitee:https://gitee.com/roseboy/classfinal
在这里插入图片描述

下载源码后导入idea
在这里插入图片描述
在这里插入图片描述

使用maven打包生成 classfinal-fatjar-1.2.1.jar
也可以从官网下载classfinal-fatjar-1.2.1.jar,我本地使用源码打包方式生成

2.使用命令方式加密

2.1 加密

将得到的 classfinal-fatjar-1.2.1.jar 和项目的jar包放在同一目录
在这里插入图片描述
运行加密命令

java -jar classfinal-fatjar-1.2.1.jar -file demo-0.0.1.jar -packages com.example.demo -cfgfiles application.yml -pwd 123456

或者

java -jar classfinal-fatjar-1.2.1.jar -file demo-0.0.1.jar -packages com.example.demo -cfgfiles application.yml -pwd 123456 -Y

下面的指令比上面的指令多了一个-Y,则不需要再窗口二次确认 。
参数说明

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

运行过程参考:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面的命令对项目根 package com.example.demo,和配置文件 application.yml 进行加密

2.2 反编译测试

这里笔者使用 jd-gui 进行反编译

jd-gui 官网:http://java-decompiler.github.io/

下载 windows 版本
在这里插入图片描述
下载后解压

在这里插入图片描述!](https://i-blog.csdnimg.cn/direct/c55849dc8460478fb81749eaf61c3971.png)
选择打开需要反编译的文件
在这里插入图片描述
反编译查看

application.properties 文件为空

com.example.demo 包下的所有文件 方法为空
在这里插入图片描述

3.使用maven方式加密

在需要加密的项目 pom.xml 文件中添加 classfinal-maven-plugin 插件

       <plugin>
           <groupId>net.roseboy</groupId>
           <artifactId>classfinal-maven-plugin</artifactId>
           <version>${classfinal.version}</version>
           <configuration>
               <password>123456</password><!--加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码-->
               <packages>com.wsjzzcbq.demo</packages>
               <cfgfiles>application.properties</cfgfiles>
           </configuration>
           <executions>
               <execution>
                   <phase>package</phase>
                   <goals>
                       <goal>classFinal</goal>
                   </goals>
               </execution>
           </executions>
       </plugin>

classfinal.version 是 1.2.1

完整 pom.xml 文件

     <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>net.roseboy</groupId>
            <artifactId>classfinal-maven-plugin</artifactId>
            <version>1.2.1</version>
            <configuration>
                <password>123456</password><!--加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码-->
                <packages>com.example.demo</packages><!--项目包名-->
                <cfgfiles>application.yml</cfgfiles><!--配置文件名-->
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>classFinal</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

添加 classfinal-maven-plugin 插件后可直接打包出加密的 jar
在这里插入图片描述

4.运行加密后的jar

运行命令

java -javaagent:demo-0.0.1-encrypted.jar="-pwd 123456" -jar demo-0.0.1-encrypted.jar

在这里插入图片描述
运行加密后的文件可以正常访问即可

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值