首页 文章

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

提问于
浏览
2

因此,我们都使用ProGuard对我们的发布APK进行模糊处理,以便更加难以对我们的宝贵代码进行逆向工程 . 但我想知道开源应用程序是否真的有必要吗?

我们以Telegram为例 - 他们的source code is readily available at GitHub,因此逆向工程保护在这种情况下无关紧要 .

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

EDIT: 问题是关于混淆,而不是关于ProGuard .

1 回答

  • 2

    Obfuscation is really important if you want to provide a certain level of privacy to your own code.

    想象一下,很多潜在的开发商都渴望赚钱,这让人垂涎欲滴 . 他们可以轻松访问您的源代码(通过github或apk反编译),将其删除并在自己的应用程序上使用它,您将无法获得任何信用 .

    Enter : Software Licenses 通过指定软件许可证,您将通知任何潜在的开发人员您自己的知识产权是什么's and do-not' .
    如果你将你的代码保存在私人事务中,那将使某人难以从中获得合法利益,但请记住,有些人不会尊重这一点,并会尝试复制该代码 . 这就是混淆的地方 .
    By obfuscating your code, you are making it hard to perceive/read by someone else, thus granting some level of protection.

    Android中的标准混淆是通过使用Proguard(及其专业和更好的产品,如DexGuard)实现的 .

    请记住,Proguard不仅是混淆工具,还适用于:

    Code Shrinking (减少代码的大小并转储应用程序不需要的类)

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

    Code Optimization

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

    Obfuscation

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

    @Very important noteObfuscating your code does not grant full protection from theft or copy.

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

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

    But responding to your main question : 如果代码至少只是优化并向所有人开放,则可以跳过混淆

相关问题