android混淆和反編譯

2021-09-23 17:49:51 字數 2226 閱讀 4333

buildtypes 

}

這個proguard-android.txt是sdk中groguard預設的檔案,具體位址在:/opt/sdk/tools/proguard/proguard-android.txt 

而proguard-rules.pro是as中專用的proguard配置檔案,其實只是字尾名不同,與eclipse中的proguard-project.txt是一樣的,配置規則相同,後面會詳細提到。 

老版本開啟混淆的命令是runproguard,現在統一用minifyenabled命令了,將其設為true就好了。 

編譯的時候可以使用命令:

./gradlew assemblerelease
eclipse: 

在project.properties檔案中開啟proguard配置(放開注釋),如下:

proguard.config=$/tools/proguard/proguard-android.txt:proguard-project.txt
同樣,生成簽名時**就會被混淆。

混淆語法 

請參考$/tools/proguard/proguard-android.txt檔案,需要注意的是檔案中雖然有了不混淆parcelable的語句,如下:

-keep class * implements

android.os.parcelable

但是還是要自己把繼承自parcelable的類寫進來避免混淆,否則會出現badparcelableexception異常。

-keep class com

.linc

.datatype

.xxinfo

-keep class com

.tencent.**

-keep class com

.tencent

.mm.sdk

.openapi

.wxmediamessage

-keep class com

.tencent

.mm.sdk

.openapi.** implements com

.tencent

.mm.sdk

.openapi

.wxmediamessage$imediaobject

為了驗證是否混淆成功,可以使用下面的反編譯工具驗證。

主要用到三個工具: 

dex2jar:將dex檔案轉為jar檔案 

jd-gui:反編譯jar檔案 

axmlprinter2.jar:反編譯xml檔案

使用方法參見《反編譯apk檔案,得到其源**的方法》

對於ubuntu64位,執行jd-gui或許會報錯: 

嘗試解決如下:

$ sudo

apt-get

install

libgtk2

.0-0

:i386

libnss3

:i386

libcurl3-gnutls

:i386

libidn11

:i386

libpango1

.0-0

:i386

libpangox-1

.0-0

:i386

libpangoxft-1

.0-0

:i386

librtmp0

:i386

libxft2

:i386

又報錯:

$ /opt/sdk/tools/jd-gui: error while loading shared libraries: libxxf86vm.so.1: cannot open

shared object file: no such file

or directory

解決辦法如下:

$ sudo

apt-get

install

libgtk2

.0-0

:i386

libxxf86vm1

:i386

libsm6

:i386

lib32stdc++6

參考: 

android混淆和反編譯

buildtypes 這個proguard android.txt是sdk中groguard預設的檔案,具體位址在 opt sdk tools proguard proguard android.txt 而proguard rules.pro是as中專用的proguard配置檔案,其實只是字尾名不同...

Android混淆編譯

1.android studio gradle android android studio會同時使用預定義 預設 的混淆編譯規則和自定義的混淆規則 在proguard rules.pro檔案中 android proguard doc thegetdefaultproguardfile progu...

proguard混淆與防反編譯

混淆也只是加大反編譯成本,不能真的防反編譯。最大的功能是對 的壓縮與優化。proguard配置 android buildtypes 常見的混淆配置 保持該包名或者類名下的所有不混淆 keep public class com.droidyue.com.widget.所有繼承android.view...