2017-01-10 90 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这样的文件名......文件仅以相同的名字存在。 –