【问题标题】:How do I verify that Android APK is having Proguard enabled or not?如何验证 Android APK 是否启用了 Proguard?
【发布时间】:2017-05-24 12:30:57
【问题描述】:

我通过从 Google Play 商店下载对一些 Android APK 文件进行了逆向工程(With1With2 和手动),但没有得到有关 proguard 使用的确切提示。

有没有办法知道哪个 Android APK 文件在逆向工程代码中使用了 proguard?

有proguard和没有proguard使用逆向工程代码有什么区别?

我在逆向工程代码中得到的是:

  1. 在一些APK文件的代码中,类名是a、b、c、d,它们的包名也是一样的。代码反编译后结构复杂,不易理解。
  2. 一些 APK 文件具有易于格式化的代码。他们的反编译代码看起来和正常的代码结构一样。类名和包名可读,但在代码中,部分函数代码不一致。

如果 APK 是用 Android Studio 签名的,那么默认情况下 pro Guard 将启用,因为我知道为什么所有 APK 没有相同的反编译代码结构?

【问题讨论】:

  • 您阅读了吗:developer.android.com/studio/build/shrink-code.html,特别是标记为Customize which code to keep的部分
  • 你的意思是使用minifyEnabled true 会生成像a,b,c,d...这样格式化的代码结构吗?还是这是由于使用了 Proguard?
  • 首先,Proguard默认不会为签名的apk启用,你必须手动启用它。现在创建两个具有相同代码的项目。在第一个代码中启用 Proguard,在其他代码中禁用它。通常,启用 Proguard 的 apk,很难找到正确的类名称。假设你的类名是MyFirstAndroidClass,那么在启用Proguard后你会看到反编译后类名发生了变化。启用 Proguard 后,您可以在此文件中找到所有引用。 app/build/outputs/mapping/debug/mapping.txt

标签: android apk reverse-engineering android-proguard


【解决方案1】:

您必须反编译代码并查看类是否按时间顺序具有名称 A、B、C。如果类在 A、B、C 中具有名称,则表示 .apk 已启用 proguard。

【讨论】:

  • 如果我使用 Android Studio 签署了构建,则默认情况下会启用 proguard。在该代码中,我没有得到像 A,B,C 之类的文件名...文件仅以相同的名称存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 2010-12-06
相关资源
最近更新 更多