在软件开发中 代码混淆是故意创建人类难以理解的源代码或机器代码的行为。代码混淆处理修改了可部署的文件 因此黑客很难从中读取信息 但仍然保持完整的功能。这最初是为 android 平台引入的。它现在能够支持 SpringBoot 2。
ProGuardProGuard 是一个开源的 最流行的 Java 字节码和 Android 应用程序优化器和代码混淆器。
更多信息 https://www.guardsquare.com/en/products/proguard/manual/usage
在 SpringBoot 中使用 ProGuard在使用前 你需要配置好 JAVA_HOME 环境变量 并指定主启动类 在 pom.xml 中指定
配置 pom.xmlbuild plugins plugin groupId com.github.wvengen /groupId artifactId proguard-maven-plugin /artifactId version 2.3.1 /version executions execution phase package /phase goals goal proguard /goal /goals /execution /executions configuration proguardVersion 6.2.2 /proguardVersion injar ${project.build.finalName}.jar /injar outjar ${project.build.finalName}.jar /outjar obfuscate true /obfuscate proguardInclude ${project.basedir}/proguard.cfg /proguardInclude /configuration dependencies dependency groupId net.sf.proguard /groupId artifactId proguard-base /artifactId version 6.2.2 /version /dependency /dependencies /plugin plugin groupId org.springframework.boot /groupId artifactId spring-boot-maven-plugin /artifactId executions execution goals goal repackage /goal /goals configuration mainClass com.example.Application /mainClass /configuration /execution /executions /plugin /plugins /build配置proguard.cfg
项目根目录下创建 proguard.cfg
-dontshrink -dontoptimize -useuniqueclassmembernames -adaptclassstrings -keepattributes Exceptions, InnerClasses, Signature, Deprecated, SourceFile, LineNumberTable, *Annotation*, EnclosingMethod -keepnames interface ** -keepparameternames -keep class com.shark.example.ExampleApplication { public static void main(java.lang.String[]); -keep class com.shark.example.dao.** { -keep class com.shark.example.configuration.log.** { -keep interface * extends * { *; } -keeppackagenames com.shark.example.controller -keep class com.shark.example.controller.* -keepclassmembers class * { org.springframework.beans.factory.annotation.Autowired *; org.springframework.beans.factory.annotation.Value *; org.springframework.stereotype.Repository *; org.springframework.beans.factory.annotation.Qualifier *; org.springframework.context.annotation.Primary *; -keepclassmembernames class * { void set*(***); boolean is*(); *** get*(); -keepclassmembers enum * { *; } -ignorewarnings运行
配置完成后运行 mvn clean package 即可
https://medium.com/ ijayakantha/obfuscate-spring-boot-2-applications-with-proguard-a8a76586b11f
https://github.com/fzl0711/springboot-proguard
https://github.com/Shark0/SpringBootProguardExample
定制 小程序 多少费用?一般对于小程序功能要求多样、复杂的,会选择专门定制。...
1. 接口描述 接口请求域名: cvm.tencentcloudapi.com 。 本接口 (ResetInstance...
1. 接口描述 接口请求域名: cvm.tencentcloudapi.com 。 本接口 (InquiryPriceR...
TOP云 (west.cn)5月20日消息,全球首家云摄影服务平台V.Photos于近日获得千万...
前言 在日常开发中,需要大量对数据库进行增删改查操作。 如果头铁的话,使用原生S...
1、背景介绍 本文着重从问题定位的角度来介绍如何定位嵌入式软件系统中的问题,...
往期技术一号位方法论系列文章 「技术人生」第1篇 什么是技术一号位 「技术人生...
Atlas介绍 ?Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQ...
[中国,上海,2021年2月25日]在MWC 2021上海智能自治网络峰会上,华为数字转型首...
9月17日,2020杭州云栖大会上,中保车服携手阿里云共建的保险行业云平台正式上线...