首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android:无混淆的APK的危险和/或缺点?

Android:无混淆的APK的危险和/或缺点?
EN

Stack Overflow用户
提问于 2016-09-08 14:12:29
回答 1查看 637关注 0票数 3

因此,我们都混淆了我们的发布APK使用ProGuard,以使逆向工程我们宝贵的代码更难。但我开始怀疑,对于开源应用程序来说,这是否真的是必要的呢?

让我们以电报为例--他们的源代码可在GitHub上随时获得。,因此逆向工程保护在这种情况下是无关紧要的.

我的问题是:除了更困难的逆向工程之外,混淆还有其他好处吗?

编辑:这个问题是专门关于混淆的,而不是一般的ProGuard。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-08 15:53:49

如果您想为自己的代码提供一定程度的隐私,混淆是非常重要的。

假设您想出了一个非常好的库,它被许多渴望赚钱的潜在开发人员所梦寐以求。他们可以很容易地访问你的源代码(通过github或apk反编译),把它撕下来并在他们自己的应用程序上使用,你不会因此而得到任何荣誉。

Enter :软件许可通过指定软件许可证,您正在通知任何潜在的开发人员什么是do和do-不是属于您自己的知识产权。

如果你把你的代码保存在一个私密的事情上,这会让别人很难从它中获得合法的利润,但是要记住,有些人不会尊重这一点,并且会试图复制这些代码。这就是混淆的原因。

通过混淆您的代码,您将很难被其他人察觉/阅读,从而提供某种级别的保护。

在安卓系统中,标准混淆是通过使用Proguard (以及他们的专业产品和更好的产品,如DexGuard)来实现的。

请记住,护卫不仅是用于混淆的工具,而且也是用于:

代码收缩(减少应用程序不需要的代码和转储类的大小)

在收缩步骤中,ProGuard从这些种子开始,递归地确定使用了哪些类和类成员。所有其他类和类成员都会被丢弃。

码优化

在优化步骤中,ProGuard进一步优化了代码。在其他优化中,可以将非入口点的类和方法变为私有、静态或最终的,可以删除未使用的参数,并且可以内联某些方法。

混淆

在混淆步骤中,ProGuard重命名不是入口点的类和类成员。在整个过程中,保留入口点确保它们仍然可以被原始名称访问。 预验证步骤是唯一不需要知道入口点的步骤。

@非常重要的注意事项:混淆了您的代码并不能完全保护您免受盗窃或复制.

有了适当的工具和一点耐心,一个非常有经验的开发人员最终可能会打破混乱(这取决于他们需要多少代码)。

@结论

无论是小项目还是复杂项目,人们都应该始终使用ProGuard。在构建过程中删除了未使用的代码这一事实为apk提供了更少的所需空间和更好的性能(由于收缩过程,ProGuarded应用程序的大小减少了25% )。即使您的应用程序代码可以通过Github或其他存储库获得,您也应该保持ProGuard脚本的整洁和干净(即使在收缩过程中只删除了少数类)。

,但在回答您的主要问题时: --如果代码至少经过简单的优化并向每个人开放,则可以跳过混淆操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39393244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档