【问题标题】:Is there any reason to obfuscate an Xamarin Forms, Android application?是否有任何理由混淆 Xamarin Forms、Android 应用程序?
【发布时间】:2019-04-12 08:42:41
【问题描述】:
【问题讨论】:
标签:
xamarin
xamarin.forms
【解决方案1】:
这取决于您对代码的偏执程度。使用未混淆的代码,获取代码的步骤非常简单,只需访问 APK 文件即可:
- 重命名为 .zip
- 解压
- 访问 zip 中的 DLL(是的,它们仍然是 C# DLL)
- 使用 ILSpy 或类似工具对代码进行逆向工程。
主要风险是获取硬编码的秘密(API 密钥)等 - 这可以通过将它们存储在文件中并在运行时加载它们来缓解,这样它们就不再在代码中可见。
混淆只会让上面的第 4 步变得更难,也更耗时。它不会阻止一个真正有决心的人去研究代码。
【解决方案2】:
混淆不会对最终用户产生任何影响,因此完全没有必要。但是,它可能会影响您的应用程序被反向工程和盗版。
很难评估任何单个产品的适当保护级别,您可能会发现将这些时间和/或金钱花在其他地方会更好。
与 G.hakim 建议的不同,Proguard 不会帮助您混淆仅适用于 Java 项目的 Xamarin 项目,这也意味着您的陈述不正确,Xamarin.Android 没有按原样转换为 Java一种流行的信念。
您可以尝试使用提前 (AOT) 编译来防止反编译而不是混淆,但它需要 Visual Studio 企业版。
您可以在此处阅读有关标准和 AOT 编译的更多信息:https://xamarinhelp.com/xamarin-android-aot-works/