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 不起作用。(不混淆)