此方法是代码混淆,增加反编译后代码的可读成本。

一、pom引入proguard及配置

<build>
   <finalName>${artifactId}</finalName>
   <plugins>
      <plugin>
         <groupId>com.github.wvengen</groupId>
         <artifactId>proguard-maven-plugin</artifactId>
         <executions>
            <execution>
               <phase>package</phase>
               <goals><goal>proguard</goal></goals>
            </execution>
         </executions>
         <configuration>
            <proguardVersion>5.3.3</proguardVersion>
            <injar>${project.build.finalName}.jar</injar>
            <outjar>${project.build.finalName}.jar</outjar>
            <obfuscate>true</obfuscate>
            <options>
               <option>-dontshrink</option>
               <option>-dontoptimize</option>
           
               <option>-adaptclassstrings</option>
               <option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                  SourceFile,LineNumberTable,*Annotation*,EnclosingMethod</option>
               <option>-keepnames interface **</option>
               <option>-keepparameternames</option>
               <option>-keep class !com.winning.cdrgw.filter.** { *; }</option>
               <option>-keep interface * extends * { *; }</option>
               <!-- This option will save all original defined annotations in all class in all packages.-->
               <!--<option>-keepclassmembers class * {-->
                  @org.springframework.beans.factory.annotation.Autowired *;&ndash;&gt;
                  @org.springframework.beans.factory.annotation.Value *;
                  }
                </option>-->
            </options>
            <libs>
               <!-- Include main JAVA library required.-->
               <lib>${java.home}/lib/rt.jar</lib>
               <lib>${java.home}/lib/jce.jar</lib>
            </libs>
         </configuration>
         <dependencies>
            <dependency>
               <groupId>net.sf.proguard</groupId>
               <artifactId>proguard-base</artifactId>
               <version>5.3.3</version>
            </dependency>
         </dependencies>
      </plugin>

      <!-- Maven assembly must be run after proguard obfuscation so it take already obfuscated files.-->
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
         <executions>
            <execution>
               <goals>
                  <goal>repackage</goal>
               </goals>
               <configuration>
                  <mainClass>com.winning.CdrgwApplication</mainClass>
               </configuration>
            </execution>
         </executions>
      </plugin>
   </plugins>
</build>

注意:

-keep class 类/包.**  表示保留类名

-keepclassmembers class 类/包.**{ *;} 表示保留类下边的所有变量,均不混淆

 

二、混淆前后对比

1、混淆前

springboot 引入proguard防反编译

2、混淆后

springboot 引入proguard防反编译

相关文章:

  • 2021-05-03
  • 2021-11-26
  • 2021-11-26
  • 2022-01-22
  • 2022-12-23
  • 2022-12-23
  • 2021-04-15
猜你喜欢
  • 2021-11-26
  • 2021-11-26
  • 2021-04-12
  • 2021-06-19
  • 2021-12-04
  • 2021-12-14
  • 2021-11-26
相关资源
相似解决方案