利用ClassFinal对java代码混淆与加密,提高代码安全性,防止反编译

为加强对知识产权的保护,提高代码的安全性,很多公司对外都用到了代码的混淆、加密操作,最近公司也加强了对产权的保护,在网上找了一大圈发现了几个代码混淆工具插件,spring框架可用。

最开始找到了用proguard对代码进行混淆,调研半天过后果断放弃了。原因是配置的选项太多了,好不容易将配置弄完了结果编译的时候校验不通过,还有一点最重要的原因我用的JDK 11不兼容(也许是我没有配置对)

后来发现了ClassFinal,既可以对代码做处理,又可以对jar包进行加密操作,主要配置相对简单得多。JDK11可用。

正文开始

先导入maven插件

			<plugin>
                <groupId>net.roseboy</groupId>
                <artifactId>classfinal-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <!--  加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码,当为 # 时不加密 -->
                    <password>123456</password>
                    <!-- 加密的包名(可为空,多个用","分割) -->
                    <packages>com.suifengpiao.pro</packages>
                    <!--  配置说明文件,如果没有特殊的打包要求可以注销 cfgfiles 标签  -->
                    <cfgfiles>application.yaml</cfgfiles>
                    <!--  排除的类名(可为空,多个用","分割) -->
                    <!-- <excludes>com.suifengpiao.pro.userBusiness.controller.UserManagerController</excludes>-->
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>classFinal</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

到这里就已经配置完了。

接下来就是打包运行了,简单得很。
利用ClassFinal对java代码混淆与加密,提高代码安全性,防止反编译_第1张图片
直接执行打包操作,等待打包完成
利用ClassFinal对java代码混淆与加密,提高代码安全性,防止反编译_第2张图片
进入到对应的打包路径,这时会有两个打好的jar包
利用ClassFinal对java代码混淆与加密,提高代码安全性,防止反编译_第3张图片

有一个是原本的包,有一个是以-encrypted.jar结尾 的包,顾名思义-encrypted.jar结尾的包就是混淆好的包。

混淆包里面的内容就是如下图,全部方法返回都是 return null;
利用ClassFinal对java代码混淆与加密,提高代码安全性,防止反编译_第4张图片

接下来就是运行了,这里的密码就是前面配置文件里面配置的,#号的话可以不用输入密码,使用方式二启动。

方式一:

java -javaagent:包名-encrypted.jar='-pwd 123456' -jar 包名-encrypted.jar

方式二:

	java -javaagent:包名-encrypted.jar -jar 包名-encrypted.jar

会弹出一个输入密码的地方,输入密码即可启动,无需密码的可以直接启动。
利用ClassFinal对java代码混淆与加密,提高代码安全性,防止反编译_第5张图片

利用ClassFinal对java代码混淆与加密,提高代码安全性,防止反编译_第6张图片

你可能感兴趣的:(java,反编译,反编译,java,maven,jar,jdk)