1. 简介

ProGuard是一个压缩、优化和混淆Java字节码文件的免费的工具,它可以删除无用的类、字段、方法和属性。可以删除没用的注释,最大限度地优化字节码文件。它还可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。常常用于Android开发用于混淆最终的项目,增加项目被反编译的难度。

2. SpringBoot使用ProGuard

2.1 在项目路径下,新增一份文件 proguard.cfg

#指定Java的版本
-target 1.8
#proguard会对代码进行优化压缩,他会删除从未使用的类或者类成员变量等
-dontshrink
#是否关闭字节码级别的优化,如果不开启则设置如下配置
-dontoptimize
#混淆时不生成大小写混合的类名,默认是可以大小写混合
-dontusemixedcaseclassnames
# 对于类成员的命名的混淆采取唯一策略
-useuniqueclassmembernames
#混淆时不生成大小写混合的类名,默认是可以大小写混合
-dontusemixedcaseclassnames
#混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代
-adaptclassstrings#对异常、注解信息予以保留
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
# 此选项将保存接口中的所有原始名称(不混淆)-->
-keepnames interface ** { *; }
# 此选项将保存所有软件包中的所有原始接口文件(不进行混淆)
#-keep interface * extends * { *; }
#保留参数名,因为控制器,或者Mybatis等接口的参数如果混淆会导致无法接受参数,xml文件找不到参数
-keepparameternames
# 保留枚举成员及方法
-keepclassmembers enum * { *; }
# 不混淆所有类,保存原始定义的注释-
-keepclassmembers class * {@org.springframework.context.annotation.Bean *;@org.springframework.beans.factory.annotation.Autowired *;@org.springframework.beans.factory.annotation.Value *;@org.springframework.stereotype.Service *;@org.springframework.stereotype.Component *;}#忽略warn消息
-ignorewarnings
#忽略note消息
-dontnote
#打印配置信息
-printconfiguration#启动类不需要混淆
-keep public class com.example.myproguarddemo.MyproguarddemoApplication {public static void main(java.lang.String[]);}

2.2 在pom文件上 加入proguard 混淆插件

<build><plugins><plugin><groupId>com.github.wvengen</groupId><artifactId>proguard-maven-plugin</artifactId><version>2.6.0</version><executions><!-- 以下配置说明执行mvn的package命令时候,会执行proguard--><execution><phase>package</phase><goals><goal>proguard</goal></goals></execution></executions><configuration><!-- 就是输入Jar的名称,我们要知道,代码混淆其实是将一个原始的jar,生成一个混淆后的jar,那么就会有输入输出。 --><injar>${project.build.finalName}.jar</injar><!-- 输出jar名称,输入输出jar同名的时候就是覆盖,也是比较常用的配置。 --><outjar>${project.build.finalName}.jar</outjar><!-- 是否混淆 默认是true --><obfuscate>true</obfuscate><!-- 配置一个文件,通常叫做proguard.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 --><proguardInclude>${project.basedir}/proguard.cfg</proguardInclude><!-- 额外的jar包,通常是项目编译所需要的jar --><libs><lib>${java.home}/lib/rt.jar</lib><lib>${java.home}/lib/jce.jar</lib><lib>${java.home}/lib/jsse.jar</lib></libs><!-- 对输入jar进行过滤比如,如下配置就是对META-INFO文件不处理。 --><inLibsFilter>!META-INF/**,!META-INF/versions/9/**.class</inLibsFilter><!-- 这是输出路径配置,但是要注意这个路径必须要包括injar标签填写的jar --><outputDirectory>${project.basedir}/target</outputDirectory><!--这里特别重要,此处主要是配置混淆的一些细节选项,比如哪些类不需要混淆,哪些需要混淆--><options><!-- 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 --></options></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals><configuration><mainClass>com.example.myproguarddemo.MyproguarddemoApplication</mainClass></configuration></execution></executions></plugin></plugins>
</build>

Java代码混淆工具-ProGuard相关推荐

  1. Java代码混淆工具ProGuard

    目录 Java代码混淆工具ProGuard 简介 描述 作用的环境 功能 工作原理 下载 使用时注意事项 版本问题 JDK位数问题 Java的字节码验证问题 关于使用类似于Hibernate的对象关系 ...

  2. Android代码混淆工具Proguard学习

    概述 Proguard代码混淆工具:可以对代码进行去冗余压缩,代码优化,代码混淆等.在Android中的主要应用就是对代码混淆:就是将类名,方法名,Field名变成如a,b,c或者1,2,3等难以阅读 ...

  3. java代码混淆器proguard使用大法3种

    ProGuard注意事项 1.反射调用类或者方法,可能失败 2.对外接口的类和方法,不要混淆 3.嵌套类 4.native方法 5.枚举类 https://www.guardsquare.com/en ...

  4. java代码混淆工具Allatori

    目录 1 从官网下载allatori文件 2 Eclipse 下进行代码混淆 2.1 config.xml 详解 3 单个jar文件进行混淆 4 注意事项 1 从官网下载allatori文件 http ...

  5. java代码混淆(使用 ProGuard 工具)

    参考文章: ProGuard简介 ProGuard 是一个压缩(shrink).优化(optimize)和混淆(obfuscate) Java 字节码文件的免费的工具.它可以删除无用的类.字段.方法和 ...

  6. android 打包 混淆配置_玩转代码混淆工具:ProGuard

    维基百科对ProGuard的介绍是:ProGuard是一个压缩(shrink),优化(optimize)与混淆(Obfuscate)Java代码的开源命令行工具.也就是说混淆只是ProGuard的其中 ...

  7. Java培训分享5个常用Java代码混淆器

    对于Java程序员来说,如果辛辛苦苦写的代码被人摽窃走,将是一件非常恼火的事情.如何保护自己的代码呢,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD,尽可能给反编译人员制 ...

  8. 安卓逆向_18 --- APK保护策略【Java代码混淆、资源混淆、签名校验】

    Java 代码混淆介绍:https://www.bilibili.com/video/BV1UE411A7rW?p=60 Android 反编译利器 jadx:GitHub上直接下载:https:// ...

  9. JAVA代码混淆器大全

      JAVA代码混淆器大全 Author/Company Program Shrink. Optim. Obfusc. Preverif. License Eric Lafortune ProGuar ...

最新文章

  1. (0071)iOS开发之Category VS Extension区别理解
  2. 中国碳纤维风电叶片行业“十四五”发展规划及投资可行性分析报告2022-2028年版
  3. java文件替换一行数据_用Golang替换文件中的一行
  4. 索引体积_MySQL入门之索引
  5. android添加快捷按钮,Android中创建快捷方式代码实例
  6. hashset去重原理_9道Java集合面试题,搞定了再去投简历吧!
  7. Red Hat 5.6-64位使用yum升级PHP
  8. 基于python+boostrap的学校图书馆管理系统
  9. 盘点各大厂商的活体检测服务,哪款更适合应用开发者?
  10. TypeScript 获取时间戳
  11. 功能结构图、信息结构图、结构图的区别
  12. FeedDemon--最好用的Blog阅读工具
  13. [转] 李嘉诚的经典名言!
  14. 腾讯「文涌 (Effidit)」2.0版发布,打造更懂写作的智能助手
  15. MySQL 8.0.17 第一次登录并修改密码
  16. 比周黑鸭与绝味食品更早上市的煌上煌,为何掉队了?
  17. 近视眼用什么台灯比较好?防近视眼护眼台灯排名
  18. 怎么调整计算机安全等级,win10电脑怎么设置安全等级_win10电脑设置安全等级的方法 - 系统家园...
  19. Arduino连接pH计
  20. 斑驳年华,与春暖有约

热门文章

  1. 暗猝灭剂BHQ-2 氨基,BHQ-2 amine,CAS:1241962-11-7
  2. 突发!顶尖大学教授跑步后洗澡晕倒猝逝,年仅53岁
  3. 用Python找回微信撤回信息,就算撤回了我也看的到~
  4. Java-Util之ArrayList
  5. CCF计算机软件能力认证试题练习:201612-2 工资计算
  6. android vitamio框架,利用Vitamio框架来做自己的视频播放器
  7. 1323:【例6.5】活动选择
  8. OpenDaylight中MD-SAL学习笔记
  9. 微信小程序 苹果手机 https wx.request 不反应
  10. linux定时任务no crontab for root 解答