美文网首页
java代码混淆工具ProGuard混淆插件

java代码混淆工具ProGuard混淆插件

作者: beyond阿亮 | 来源:发表于2022-05-01 21:31 被阅读0次

java代码混淆工具ProGuard混淆插件

介绍

ProGuard是一个纯java编写的混淆工具,有客户端跟jar包两种使用方式。可以将程序打包为jar,然后用工具进行混淆,也可以在maven中导入ProGuard的插件,对代码进行混淆。

大家都知道
java代码可以反编译,因此有时候要保护自己的知识产权还真得费点心思,一般来说有三个思路:

  • 1、将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密class文件;
  • 2、使用花指令,使得class文件不能反编译(利用反编译工具漏洞);安全性一般,还是有花指令破解器;
  • 3、代码混淆,提高代码阅读成本;简单易操作,一般采用这种或者与其它方式结合;

maven项目引入插件

pom.xml

<plugins>
<!-- ProGuard混淆插件-->
            <plugin>
                <groupId>com.github.wvengen</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <version>2.0.14</version>
                <executions>
                    <execution>
                        <!-- 混淆时刻,这里是打包的时候混淆-->
                        <phase>package</phase>
                        <goals>
                            <!-- 使用插件的什么功能,当然是混淆-->
                            <goal>proguard</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 是否将生成的PG文件安装部署-->
                    <attach>true</attach>
                    <!-- 是否混淆-->
                    <obfuscate>true</obfuscate>
                    <!-- 指定生成文件分类 -->
                    <attachArtifactClassifier>pg</attachArtifactClassifier>
                    <options>
                        <!-- JDK目标版本1.8-->
                        <option>-target 1.8</option>
                        <!-- 不做收缩(删除注释、未被引用代码)-->
                        <option>-dontshrink</option>
                        <!-- 不做优化(变更代码实现逻辑)-->
                        <option>-dontoptimize</option>
                        <!-- 不路过非公用类文件及成员-->
                        <option>-dontskipnonpubliclibraryclasses</option>
                        <option>-dontskipnonpubliclibraryclassmembers</option>
                        <!--不用大小写混合类名机制-->
                        <option>-dontusemixedcaseclassnames</option>

                        <!-- 优化时允许访问并修改有修饰符的类和类的成员 -->
                        <option>-allowaccessmodification</option>
                        <!-- 确定统一的混淆类的成员名称来增加混淆-->
                        <option>-useuniqueclassmembernames</option>
                        <!-- 不混淆所有包名-->
                        <option>-keeppackagenames</option>
                        <option>-keepdirectories</option>

                        <!-- 需要保持的属性:异常,注解等-->
                        <option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod</option>
                        <option>-keep class javax.annotation.**</option>
                        <option>-dontwarn javax.crypto.**</option>
                        <option>-keep class javax.crypto.**</option>
                    </options>

                    <outjar>${project.build.finalName}-pg.jar</outjar>
                    <libs>
                        <lib>${java.home}/lib/rt.jar</lib>
                    </libs>
                    <!-- 对什么东西进行加载,这里仅有classes成功,毕竟你也不可能对配置文件及JSP混淆吧-->
                    <injar>classes</injar>
                    <!-- 输出目录-->
                    <outputDirectory>${project.build.directory}</outputDirectory>
                </configuration>
            </plugin>
</plugins>

打包生成混淆jar包

mvn clean install -Dmaven.test.skip=true

[图片上传失败...(image-e14676-1651411890373)]

在target目录会生成classes-pg.jar就是混淆后的jar包

部署

可以把jar包名修改为和spring包命名类似, 或者直接在spring源代码里加限制代码,然后打包

参考链接:
https://blog.csdn.net/sinat_35100573/article/details/51833294
https://www.cnblogs.com/nevermorewang/p/8041548.html
https://blog.csdn.net/sqzhao/article/details/50627920
https://blog.csdn.net/wltj920/article/details/48970869
https://blog.csdn.net/qysh123/article/details/17786163

相关文章

  • java代码混淆工具ProGuard混淆插件

    java代码混淆工具ProGuard混淆插件 介绍 ProGuard是一个纯java编写的混淆工具,有客户端跟ja...

  • Android混淆总结

    Proguard 混淆工具来帮助我们快速地对代码进行混淆。根据 Java 官方介绍,Proguard 对应的具体中...

  • ProGuard

    Java代码混淆工具——ProGuard 1.ProGuard简介 简单来说,ProGuard是一个对代码进行压缩...

  • APK加固方式

    一:代码混淆 Proguard是一个代码优化和混淆工具。能够提供对Java类文件的压缩、优化、混淆,和预校验。压缩...

  • 安卓产品代码混淆

    Java层代码混淆工具: proguard https://www.guardsquare.com/proguar...

  • 你混淆Android代码多吗?

    ProGuard是一个开源的Java代码混淆器。它可以混淆Android项目里面的java代码,但是不能混淆资源,...

  • Java代码混淆工具ProGuard

    [TOC] Java代码混淆工具ProGuard 由于Java 代码的 class类很容易被反编译,为了保证知识产...

  • proguard代码混淆面试问题讲解

    一、混淆(proguard)到底是什么? ProGuard工具是用于压缩,优化,混淆我们的代码.主作用是可以移除代...

  • Android代码混淆实战

    什么是代码混淆:     Android SDK 自带了混淆工具Proguard。它位于SDK根目录\tools\...

  • 代码混淆

    1) 前言 ProGuard是一个开源的Java代码混淆器。它可以混淆Android项目里面的java代码,对的,...

网友评论

      本文标题:java代码混淆工具ProGuard混淆插件

      本文链接:https://www.haomeiwen.com/subject/xdnpyrtx.html