Android ProGuard - 只有混淆

Posted

技术标签:

【中文标题】Android ProGuard - 只有混淆【英文标题】:Android ProGuard - only obfuscation 【发布时间】:2011-10-01 18:46:44 【问题描述】:

是否可以仅将 ProGuard 用于混淆。我不希望 ProGuard 从我的项目中删除任何类。我使用 ProGuard 的目的只是为了混淆以防止逆向工程。

【问题讨论】:

Proguard 不会阻止逆向工程。 @dcow 但它确实让它变得更难了,“根据 android 开发者文档,“混淆的代码使你的 APK 难以逆向工程” @JohnathanLogan 当然,但它并没有从根本上改变信任模型。如果用户有你的客户,他们可以做任何你的客户可以做的事情。再多的混淆也无法阻止这一点。尝试通过 jdgui 或类似的方式运行 Android 应用程序。即使使用 proguard,也很容易看到应用程序在做什么。你只是没有得到所有花哨的企业 java 类长名称——这通常只会让事情变得不那么可读 XD。如果我真的想保护一些专有算法,我不会依赖 proguard。有更好的混淆器,尽管价格更高。 【参考方案1】:

是的,通过指定

-dontshrink
-dontoptimize

您可以在ProGuard manual 中找到所有配置选项的详细信息。

请注意,缩小和优化可能有助于防止逆向工程。

【讨论】:

谢谢。我之前尝试过 -dontoptimze 但它仍在删除类文件。当我同时尝试 -dontshrink 和 -dontoptimize 时,它​​可以工作。 您好,到了 2015 年,情况发生了变化。一方面,android 世界正在向 gradle 转变。这仍然应该工作吗?使用 Gradle? 为什么缩小优化有助于防止逆向工程? @Eric Lafortune 如何混淆代码。我也只想重命名类,使反编译的代码不可读。如果我不在 Proguard.pro 中写任何东西,那么它会重命名所有类 这是我运行它所需要的吗? # 在此处添加项目特定的 ProGuard 规则。 -dontshrink *; -不要优化 *;

以上是关于Android ProGuard - 只有混淆的主要内容,如果未能解决你的问题,请参考以下文章

Android 中的 ProGuard 不起作用。(不混淆)

如何使用 proguard 混淆 android 库(.aar)?

如何用 Eclipse 混淆 Android 库项目?

构建 Gradle + Proguard + APKLib

Android:proguard 不会混淆源代码

Proguard 不会混淆 android 中的 strings.xml