1. 程式人生 > 程式設計 >Android Studio配置反混淆的實現

Android Studio配置反混淆的實現

Android Studio如何混淆

為什麼要混淆

瞭解安卓程式編譯的會知道 其實我們的apk並不是很安全,從apk從可以解包出,步驟:

將apk檔案改成zip結尾 然後解壓zip 然後就會發現裡面有一個classes.dex

dex2jar 這個工具將dex檔案轉成jar
下載地址:http://sourceforge.net/projects/dex2jar/files/
用這個工具的命令 轉jar

d2j-dex2jar classes.dex

jd-gui 這個工具用於將jar轉成java程式碼
下載地址:http://jd.benow.ca/
用這個工具開啟classes-dex2jar.jar

Android Studio配置反混淆的實現

因此最簡單的就是把java混淆了,讓別人看不懂

AS裡面配置混淆

配置混淆

在build.gradle裡面配置

release {
  minifyEnabled true //用於設定是否啟用混淆 
  proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}

打包後解出來的jar:

Android Studio配置反混淆的實現

Android Studio配置反混淆的實現

配置混淆規則

-dontusemixedcaseclassnames 表示混淆時不使用大小寫混合類名。

-dontskipnonpubliclibraryclasses 表示不跳過library中的非public的類。

-verbose 表示列印混淆的詳細資訊。

-dontoptimize 表示不進行優化,建議使用此選項,因為根據proguard-android-optimize.txt中的描述,優化可能會造成一些潛在風險,不能保證在所有版本的Dalvik上都正常執行。

-dontpreverify 表示不進行預校驗。這個預校驗是作用在Java平臺上的,Android平臺上不需要這項功能,去掉之後還可以加快混淆速度。

-keepattributes *Annotation* 表示對註解中的引數進行保留。


-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
上面兩行表示不混淆上述兩個類

-keep class com.tencent.wns.config.ConfigManager {*;}
上面一行表示不混淆這整個類

到此這篇關於Android Studio如何混淆的實現的文章就介紹到這了,更多相關Android Studio 混淆內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!