有什么理由混淆Xamarin Forms Android应用程序吗?

时间:2019-04-12 08:42:41

标签: xamarin xamarin.forms

我在准备应用程序发行说明时看到:

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 Phone的Java,是否有任何理由使用这样的产品进行混淆?将Forms应用程序部署到Android的人们通常会使用这些产品吗?

3 个答案:

答案 0 :(得分:0)

  

混淆是使某些东西难以理解的一种做法。经常对代码进行混淆处理,以保护知识产权并防止攻击者对专有软件程序进行反向工程。

我个人不相信代码混淆,因为这只会延迟反向工程而不会停止它,一个知道自己的知识的人很容易就能对代码进行反向工程。

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

我个人建议您在项目中安装Progaurd(如果它是Android本机(科特林或Java)),并且应该同时进行代码混淆和减小APK大小。在Xamarin Android中,尽管您可能想打开AOT并配置DotFuscator(好的文档)

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

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

答案 1 :(得分:0)

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

很难评估每种产品的正确保护级别,您可能会发现将时间和/或金钱花在其他地方更好。

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

您可以尝试使用Ahead of time(AOT)编译作为防止反编译而不是混淆的手段,但这需要Visual Studio Enterprise版本。

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

答案 2 :(得分:0)

这取决于您对代码的偏执程度。使用不混淆的代码,可以访问APK文件非常简单地取回代码:

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

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

迷惑只会使上面的第4步变得更加困难,并且花费更长的时间。这并不会阻止一个真正有决心的人获取代码。