当前位置:主页 > 查看内容

SpringBoot 代码混淆方案 ProGuard

发布时间:2021-08-18 00:00| 位朋友查看

简介:概述 在软件开发中 代码混淆是故意创建人类难以理解的源代码或机器代码的行为。代码混淆处理修改了可部署的文件 因此黑客很难从中读取信息 但仍然保持完整的功能。这最初是为 android 平台引入的。它现在能够支持 SpringBoot 2。 ProGuard ProGuard 是一个开……
概述

在软件开发中 代码混淆是故意创建人类难以理解的源代码或机器代码的行为。代码混淆处理修改了可部署的文件 因此黑客很难从中读取信息 但仍然保持完整的功能。这最初是为 android 平台引入的。它现在能够支持 SpringBoot 2。

ProGuard

ProGuard 是一个开源的 最流行的 Java 字节码和 Android 应用程序优化器和代码混淆器。

更多信息 https://www.guardsquare.com/en/products/proguard/manual/usage

在 SpringBoot 中使用 ProGuard

在使用前 你需要配置好 JAVA_HOME 环境变量 并指定主启动类 在 pom.xml 中指定

配置 pom.xml
 build 
 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


本文转自网络,原文链接:https://developer.aliyun.com/article/787312
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐