2017-01-10 29 views
2

我反向工程(With1,With2和手動)從谷歌Play商店下載一些Android APK文件,但沒有得到確切的提示使用proguard。如何驗證Android APK是否啓用了Proguard?

有什麼方法可以知道哪個Android APK文件在反向工程代碼中具有proguard使用?

而且

是什麼ProGuard的與無ProGuard的使用反向工程的代碼有什麼區別?

我在逆向工程代碼得到了什麼是:

  1. 在一些APK文件的代碼中,類名是一樣的a,b,c,d和他們的包名也以同樣的方式。代碼在反編譯後非常複雜,不易理解。
  2. 某些APK文件具有易於格式化的代碼。他們反編譯的代碼看起來像正常的代碼結構一樣。類名和包名是可讀的,但在代碼中,一些函數具有不一致性代碼。

如果APK使用Android Studio進行了簽名,那麼默認情況下會啓用職業後衛,因爲我知道爲什麼所有APK都沒有相同的反編碼代碼結構?

+0

您是否閱讀過:https://developer.android.com/studio/build/shrink-code.html,特別是標有'自定義代碼保留的代碼段' –

+0

您的意思是說,使用minifyEnabled true將生成代碼結構像a,b,c,d ...格式化?或者這是由於Proguard的使用? –

+0

首先,Proguard默認不會爲已簽名的apk啓用,您必須手動啓用它。現在創建兩個具有相同代碼的項目。在第一個代碼啓用Proguard,並在其他禁用它。通常,啓用了Proguard的apk,很難找出類的正確名稱。假設你的類名是MyFirstAndroidClass,那麼在啓用Proguard之後,你將會看到類的名字在反編譯之後被改變。 啓用Proguard後,您可以在該文件中找到所有參考。 app/build/outputs/mapping/debug/mapping.txt – Shekhar

回答

0

您必須對代碼進行反編譯,並查看類是否按時間順序具有名稱A,B,C。如果類在A,B,C中具有名稱,則意味着.apk啓用了proguard。

+0

如果我使用Android Studio簽署了構建,那麼默認情況下啓用了proguard。在那段代碼中,我沒有得到像A,B,C這樣的文件名......文件僅以相同的名字存在。 –

相關問題