# Android Proguard Android Proguard 是 Android 原生的混淆程式套件,其目的是為了不讓反組譯的編碼易於被看清 導引步驟 -- - [ ] 1. 設定 build.gradle 的 buildTypes --> minifyEnabled = true (啟用 Proguard 混淆) - 建議在 release 中啟用就好,因為在 debug 模式中會需要查看 log 及相關的資訊 - proguard-android-optimize.txt 是原生預設混淆的規則 - proguard-rules.pro.txt 是可以再加註客製的混淆規則 ![](https://i.imgur.com/AhVU7WS.png) - [ ] 2. 在 proguard-rules.pro.txt 檔中加註客製的規則 - proguard-rules.pro.txt 在專案結構 Gradle Scripts 中的 proguard - rules ![](https://i.imgur.com/7VEvY4o.png) - 添加自己客製的規則 ![](https://i.imgur.com/kUKQg8j.png) - 常用規則可查看文獻 - [ProGuard 程式碼混淆保護](https://tw-hkt.blogspot.com/2018/12/proguard.html) - ***坑:由於 Proguard 會將 class 混淆,這可能造成 Gson 在 Parser Model 的時候會有異常,因此客製了一條規則 -keep class com.cfd.voxy.data.remote.model.{;} ,確保 Model 不會被混淆*** - [ ] 3. 輸出 aab / apk ,供 JADX 反組譯套件查看混淆程式碼 - [ ] 4. 請下載 [反組譯 Jadx 下載 - jadx-1.4.4.zip](https://github.com/skylot/jadx/releases/tag/v1.4.4),確認下載後解壓進入 bin ,並執行 jadx.gui 。 - [ ] 5. 將上述輸出的 aab/apk 匯入 jadx 中,即可查看混淆後的結果 ![](https://i.imgur.com/mwmwbuH.png) - [ ] 6. 可利用 jdax 的 search 尋找想要混淆的 class/function ,並查看是否符合您的混淆結果 ![](https://i.imgur.com/ZCzBQfe.png) - [ ] 7. 測試 App 運作情況,如有異常,很可能是混淆的程式碼沒辦法被第三方套件判讀 參考文獻 --- - [Proguard 簡介](https://jamesqi.medium.com/proguard-d8cc2e67211) - [ProGuard 程式碼混淆保護](https://tw-hkt.blogspot.com/2018/12/proguard.html) - [如何反組譯檢測 App - Jadx](https://ithelp.ithome.com.tw/articles/10208426) - [反組譯 Jadx 下載 - jadx-1.4.4.zip](https://github.com/skylot/jadx/releases/tag/v1.4.4) ###### tags: `Android 資安區` `Proguard`