利用classfinal-maven-plugin对jar进行加密,防止反编译

背景:将jar包部署到其他服务器,如何保证自己的jar不会被反编译解密

一、如何打包成加密的jar

1、在pom文件中,添加这两项

A、

1
2
3
4
5
<dependency>
            <groupId>net.roseboy</groupId>
            <artifactId>classfinal-maven-plugin</artifactId>
            <version>1.2.1</version>
        </dependency>

B、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<plugin>
                <!--
                    1】加密后,方法体被清空,保留方法参数、注解等信息;是为了兼容spring、swagger等扫描注解的框架
                    2】方法体被清空后,反编译者只看到方法名和注解,看不到方法的具体内容
                    3】加密后的项目需要设置javaagent来启动,启动过程中解密class,完全内存解密,不留下任何解密后的文件
                    【启动加密的Jar】: 生成 xxx-encrypted.jar,这个就是加密后的jar文件:加密后的文件不可执行
                           无密码:需要java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar
                           有密码:java -javaagent:xxx -encrypted.jar = '-pwd 000000' -jar xxx-encrypted.jar
                -->
                <groupId>net.roseboy</groupId>
                <artifactId>classfinal-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <password>#</password> <!--加密密码,如果是#号,则使用无密码模式加密-->
                    <packages>com.bk</packages> <!--加密的包名(可为空,多个用“,”分割)-->
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>classFinal</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

  这样打包出来的jar,反编译看到class文件,不能看到方法体里面的内容,只能看到方法名称

 

二、如何运行加密的jar

1
java -javaagent:D:\custom-server\test-server-1.0.0.jar -jar D:\custom-server\test-server-1.0.0.jar

  

 

posted @   信铁寒胜  阅读(1033)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示