【问题标题】:Is there any reason to obfuscate an Xamarin Forms, Android application?是否有任何理由混淆 Xamarin Forms、Android 应用程序?
【发布时间】:2019-04-12 08:42:41
【问题描述】:

我在准备应用程序发布说明中看到:

https://docs.microsoft.com/en-us/xamarin/android/deploy-test/release-prep/index?tabs=windows#protect-the-application

https://docs.microsoft.com/en-us/xamarin/android/deploy-test/release-prep/index?tabs=windows#protect_app

这表明对于 Android 应用程序,使用此产品可能是明智的:

https://www.preemptive.com/products/dotfuscator/compare-editions

我的问题是,由于该应用程序最初是 C#,我假设它已转换为适用于 Android 手机的 Java,是否有任何理由使用此类产品进行混淆处理?将 Forms 应用部署到 Android 的用户通常会使用这些产品吗?

【问题讨论】:

    标签: xamarin xamarin.forms


    【解决方案1】:

    这取决于您对代码的偏执程度。使用未混淆的代码,获取代码的步骤非常简单,只需访问 APK 文件即可:

    1. 重命名为 .zip
    2. 解压
    3. 访问 zip 中的 DLL(是的,它们仍然是 C# DLL)
    4. 使用 ILSpy 或类似工具对代码进行逆向工程。

    主要风险是获取硬编码的秘密(API 密钥)等 - 这可以通过将它们存储在文件中并在运行时加载它们来缓解,这样它们就不再在代码中可见。

    混淆只会让上面的第 4 步变得更难,也更耗时。它不会阻止一个真正有决心的人去研究代码。

    【讨论】:

      【解决方案2】:

      混淆不会对最终用户产生任何影响,因此完全没有必要。但是,它可能会影响您的应用程序被反向工程和盗版。

      很难评估任何单个产品的适当保护级别,您可能会发现将这些时间和/或金钱花在其他地方会更好。

      与 G.hakim 建议的不同,Proguard 不会帮助您混淆仅适用于 Java 项目的 Xamarin 项目,这也意味着您的陈述不正确,Xamarin.Android 没有按原样转换为 Java一种流行的信念。

      您可以尝试使用提前 (AOT) 编译来防止反编译而不是混淆,但它需要 Visual Studio 企业版。

      您可以在此处阅读有关标准和 AOT 编译的更多信息:https://xamarinhelp.com/xamarin-android-aot-works/

      【讨论】:

        【解决方案3】:

        混淆是使事物难以理解的做法。编程代码经常被混淆以保护知识产权并防止攻击者对专有软件程序进行逆向工程。

        就我个人而言,我不相信代码混淆,因为它只会延迟逆向工程而不是阻止它,一个知道自己的东西的人很容易能够对代码进行逆向工程。

        通常,Android 开发人员更喜欢使用 Progaurd(不会帮到您!)进行代码混淆,但是您上面提到的还有其他工具。

        我个人建议您在项目中设置 Progaurd,如果它是 Android 原生的(Kotlin 或 Java),并且应该同时进行代码混淆和减小 APK 大小。在 Xamarin Android 中,虽然您可能想要打开 AOT 并配置 DotFuscator(良好的文档)

        如果您还想减小应用大小,可以查看我的博客

        https://heartbeat.fritz.ai/reducing-the-app-size-in-xamarin-deep-dive-7ddc9cb12688?source=your_stories_page---------------------------.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-13
          • 2018-07-23
          • 1970-01-01
          • 2011-09-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多