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

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

一、如何打包成加密的jar

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

A、

<dependency>
            <groupId>net.roseboy</groupId>
            <artifactId>classfinal-maven-plugin</artifactId>
            <version>1.2.1</version>
        </dependency>

B、

<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

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

  

 

posted @ 2024-10-31 14:50  信铁寒胜  阅读(2194)  评论(0)    收藏  举报