Android:非模糊APK的危险和/或缺点?

Android:非模糊APK的危险和/或缺点?,android,obfuscation,Android,Obfuscation,因此,我们都使用ProGuard混淆了我们发布的APK,以使宝贵代码的逆向工程变得更加困难。但我开始怀疑,对于开源应用程序来说,这是否真的是必要的 让我们以电报为例,它们的反向工程保护在这种情况下是不相关的 我的问题是:除了更难的逆向工程,模糊处理还有其他好处吗 编辑:问题是关于模糊处理,而不是一般的ProGuard 如果您想为自己的代码提供一定程度的隐私,则混淆非常重要。 想象一下,你想出了一个非常好的库,这是许多渴望赚钱的潜在开发人员梦寐以求的。他们可以轻松地访问您的源代码(通过github

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

让我们以电报为例,它们的反向工程保护在这种情况下是不相关的

我的问题是:除了更难的逆向工程,模糊处理还有其他好处吗


编辑:问题是关于模糊处理,而不是一般的ProGuard

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

想象一下,你想出了一个非常好的库,这是许多渴望赚钱的潜在开发人员梦寐以求的。他们可以轻松地访问您的源代码(通过github或apk反编译),将其剽窃并在自己的应用程序中使用,您将不会因此获得任何荣誉

输入:软件许可证 通过指定软件许可证,您可以告知任何潜在的开发人员您自己的知识产权应该做什么和不应该做什么。
如果您将代码保留在私人事务中,这将使某人很难从中获得合法利润,但请记住,有些人会不尊重这一点,并试图复制该代码。这就是混淆的原因。
通过混淆您的代码,您会使他人难以察觉/阅读,从而提供一定程度的保护。

Android中的标准模糊处理是通过使用Proguard(以及他们的专业和更好的产品,如DexGuard)实现的

请记住,这不仅是一种模糊处理工具,而且还用于:

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

在收缩步骤中,ProGuard从这些种子开始 递归地确定使用哪些类和类成员。全部的 其他类和类成员将被丢弃

代码优化

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

模糊处理

在混淆步骤中,ProGuard重命名类和 类成员,这些成员不是入口点。在整个过程中,, 保留入口点可以确保用户仍然可以访问它们 他们原来的名字

预验证步骤是唯一 不必知道入口点

@非常重要的注意事项混淆您的代码并不能完全防止被盗或复制。

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

@结论
无论是小型项目还是复杂项目,都应该始终使用ProGuard。在构建过程中删除了未使用的代码,这使得apk所需的空间更少,性能更好(我已经有了一些经过改进的应用程序,由于缩减过程,它们的大小减少了25%)。 即使您的应用程序代码可以通过Github或其他存储库获得,您也应该保持ProGuard脚本整洁(即使在收缩过程中只有少数类被删除)


但回答您的主要问题:如果代码至少经过简单优化并向所有人开放,您可以跳过模糊处理

“他们从代码模糊处理中获得了什么?”ProGuard不仅支持模糊处理,还支持“缩小”以删除未使用的方法/类/资源。@Michael,问题是关于模糊处理的。我的观点是模糊处理可能不是他们使用ProGuard的原因。@Michael,也许吧,但问题是除了更难的逆向工程之外,模糊处理是否还有其他好处。“因此,我们都使用ProGuard混淆了我们发布的APK,以使珍贵代码的逆向工程更加困难”--不,不是“全部”。“但我开始怀疑,对于开源应用程序来说,这是否真的是必要的?”--IMHO,不,出于与您引用的相同原因。“除了更困难的逆向工程之外,混淆还有其他好处吗?”?”“我不知道。