【发布时间】:2017-05-24 12:30:57
【问题描述】:
我通过从 Google Play 商店下载对一些 Android APK 文件进行了逆向工程(With1、With2 和手动),但没有得到有关 proguard 使用的确切提示。
有没有办法知道哪个 Android APK 文件在逆向工程代码中使用了 proguard?
和
有proguard和没有proguard使用逆向工程代码有什么区别?
我在逆向工程代码中得到的是:
- 在一些APK文件的代码中,类名是a、b、c、d,它们的包名也是一样的。代码反编译后结构复杂,不易理解。
- 一些 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