最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java之代碼混淆插件ProGuard使用及說明

 更新時間:2026年04月07日 09:06:20   作者:enjoy囂士  
本文介紹了使用ProGuard對Java項目進行代碼混淆,以保護業(yè)務(wù)邏輯,詳細說明了Maven項目配置、ProGuard版本及使用方法,強調(diào)了生成的jar包與mapping.txt文件需對應(yīng)的重要性

背景

接之前的文章,用java實現(xiàn)了C++庫函數(shù),并對外提供接口,但是Java可以反編譯看到源碼業(yè)務(wù)邏輯等,所以決定使用代碼混淆功能,雖然混淆之后也能看到業(yè)務(wù)邏輯,但是增加了難度而已。

環(huán)境

  • maven項目管理
  • Java 1.8
  • proguard 2.7.0

pom配置

<!-- ProGuard 混淆插件 -->
   <plugin>
       <groupId>com.github.wvengen</groupId>
       <artifactId>proguard-maven-plugin</artifactId>
       <version>2.7.0</version>
       <executions>
           <execution>
               <phase>package</phase>
               <goals>
                   <goal>proguard</goal>
               </goals>
           </execution>
       </executions>
       <configuration>
           <libs>
               <lib>${java.home}/lib/rt.jar</lib>
               <lib>${java.home}/lib/jsse.jar</lib>
           </libs>
           <obfuscate>true</obfuscate>
           <attach>false</attach>
           <options>
               ########################################
               # 不做裁剪和優(yōu)化(SDK必須)
               ########################################
               <option>-dontoptimize</option>
               <option>-dontshrink</option>
               <option>-dontwarn</option>
               ########################################
               # 保留對外 API
               ########################################
               <option>
                   -keep public class org.test.api.** { *; }
               </option>
               ########################################
               # 內(nèi)部實現(xiàn)允許混淆
               ########################################
               <option>
                   -keep,allowobfuscation class org.test.internal.** { *; }
               </option>
               ########################################
               # Java 8 必須保留
               ########################################
               <option>-keepattributes Signature</option>
               <option>-keepattributes *Annotation*</option>
               <option>-keepattributes Exceptions</option>
               <option>-keepattributes InnerClasses</option>
               <option>-keepattributes EnclosingMethod</option>
               <option>-keepattributes BootstrapMethods</option>
               ########################################
               # 枚舉安全
               ########################################
               <option>
                   -keepclassmembers enum * {
                   public static **[] values();
                   public static ** valueOf(java.lang.String);
                   }
               </option>
               ########################################
               # 序列化安全
               ########################################
               <option>
                   -keepclassmembers class * implements java.io.Serializable {
                   static final long serialVersionUID;
                   }
               </option>
               ########################################
               # 混淆強度增強
               ########################################
               <option>-allowaccessmodification</option>
               <option>-overloadaggressively</option>
               <option>-useuniqueclassmembernames</option>
               <option>-flattenpackagehierarchy</option>
               ########################################
               # 輸出 mapping, 方便調(diào)試
               ########################################
               <option>-printmapping target/mapping.txt</option>
               <option>-keepattributes LineNumberTable</option>
           </options>
       </configuration>
   </plugin>

說明

生成的 jar包target/mapping.txt 文件要對應(yīng)起來,防止出問題無法定位到問題點。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

墨竹工卡县| 衢州市| 林西县| 稻城县| 汉沽区| 上虞市| 汕头市| 长兴县| 新宾| 博客| 甘肃省| 吴旗县| 靖安县| 日照市| 保德县| 石首市| 石河子市| 永济市| 竹北市| 平邑县| 红原县| 额尔古纳市| 隆尧县| 唐河县| 历史| 黔东| 常山县| 安阳市| 应城市| 沅陵县| 黄山市| 龙游县| 吉安市| 格尔木市| 潞城市| 武威市| 桦南县| 安达市| 石家庄市| 太仆寺旗| 勃利县|