Proguard没有混淆Android应用程序

时间:2012-03-15 02:14:45

标签: java android proguard

根据此链接: http://developer.android.com/guide/developing/tools/proguard.html,他们声明:

  

ProGuard使您的应用程序更难以进行逆向工程,当您的应用程序使用对安全性敏感的功能时(例如,在许可您的应用程序时),使用它非常重要。

但那不是真的!我正在使用ADT 17预览版4中包含的最新Proguard(4.7)。我通过添加

导出我的应用程序时使用proguard
proguard.config=proguard-android.txt

进入我的project.properties(proguard-android.txt只是ADT 17中包含的默认设置)。

但我可以轻松地对我的apk进行反向工程,使用以下步骤将其恢复为原始代码:

  1. 使用apk工具提取apk。

  2. 使用smali将.smali文件转换为.dex(您将smali指向包含.smali文件的文件夹,通常位于/ src / com / [公司名称] / [appname中])

  3. 使用dex2jar将生成的.dex文件转换为.jar

  4. 使用jd-gui查看生成的.jar文件

  5. 所以我的问题是:我做错了吗?或者,在混淆代码时,proguard是完全没用的吗?

1 个答案:

答案 0 :(得分:1)

如果您使用的是android.support。*兼容库,则这可能是问题的根源。 将以下行添加到proguard配置文件中:

-dontwarn android.support.**
-keep class android.support.** { *; }

诊断proguard问题的最简单方法是使用apache ant构建应用程序。您将在stderr中看到所有警告和错误。

这适用于所有使用动态类加载,反射和依赖于API版本的同一类的多个实现的库。