如何在 VS 2019 上混淆 xamarin 应用程序
Posted
技术标签:
【中文标题】如何在 VS 2019 上混淆 xamarin 应用程序【英文标题】:How to obfuscate a xamarin App on VS 2019 【发布时间】:2020-05-13 20:25:03 【问题描述】:我需要保护应用程序上的业务逻辑,这是使用 xamarin 表单创建的。我在论坛和此处搜索了有关 Babel 和 ConfuserEx 的信息,但我不明白它是否有效。
Case Babel
我已经安装了演示 SDK,并且我已经更新了环境变量的路径。 在 android 项目中,我添加了以下几行,正如我在示例和书籍“Xamarin Mobile Development for Android Cookbook”中看到的那样
<UsingTask TaskName="Babel" AssemblyName="Babel.Build, Version=9.3.3.0, Culture=neutral, PublicKeyToken=138d17b5bd621ab7" />
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
<Babel InputFile="$(TargetPath)" OutputFile="$(TargetPath)"
VerboseLevel="5"
ObfuscateTypes="true"
ObfuscateEvents="true"
ObfuscateMethods="true"
ObfuscateProperties="true"
ObfuscateFields="true"
VirtualFunctions="true"
FlattenNamespaces="false"
UnicodeNormalization="false"
SuppressIldasm="true"
StringEncryption="xor"
ResourceEncryption="false"
ValueEncryption="false"
DynamicProxy="false"
ControlFlowObfuscation="goto=on"
ILIterations="5" />
</Target>
编译很好,但是我用ILSpy工具看到dll,可以看到流程、方法、变量等……
Case ConfuserEx
我已经安装了 ConfuserEx 的 VS 扩展,并尝试在 common 项目上激活它,它被混淆了,但是当我存档以生成 apk 时,它没有被混淆。 我尝试在 Android Project 上做而不是 common Project,但它不起作用。 你能给我一些建议以混淆应用程序吗?我想用 Android、ios 和 UWP 应用程序来做。 因为默认情况下,uwp、droid和ios很容易做逆向工程,不是吗?
【问题讨论】:
您尝试过使用DotFuscator 吗?此外,ios AFAIK 不需要混淆。 preemptive.com/dotfuscator/ce/docs/help/… 我读过它,但我没有尝试过,因为我读到它很昂贵,而且应用程序是为其他业务构建的。 emmm 看来我已经搜索好了,为什么xamarin iOS 不需要呢? 因为 iOS 是 AOT 的,而 IPA 无论如何都很难逆向工程 谢谢,Android 是链条中的薄弱环节 【参考方案1】:因为默认情况下,uwp、droid和ios很容易做倒车 工程,不是吗?
假设这是问题,答案是你大多是错的。
AOT 编译的程序集不容易逆向工程,UWP 和 iOS 强制 AOT,而 Android 现在默认启用部分 AOT,VS Enterprise 也可以启用完整 AOT。
说到没有什么是不能逆向工程的,你仍然可以在 AOT 编译的顶部添加混淆以使其更加困难,只是没有内置的解决方案(而且据我也不知道没有免费的解决方案)所以你可以选择你喜欢的,这里不允许这样的建议。
【讨论】:
谢谢你的解释。 UWP,我读了其他东西,但根据你的解释,我试图反编译 appxbundle 并且它受到保护。 Apple 我知道它,但我读到它有一些问题,我试图从 ipa 打开 dll,我可以读取类、全局变量和方法,但流受到保护。关于工具,一些用户在论坛上说 ConfuserEx 有效,而另一些则无效,所以我尝试使用 Babel,它不是免费的,我无法使用它,理论上它支持 xamarin【参考方案2】:在过去的 3 年中,我一直在将 Babel 与我的 Xamarin.Android 应用程序一起使用。它工作得非常好。如果您遇到问题,请联系 Babel 的 Alberto。他提供了非常好的支持。大多数问题是因为 Xamarin 的构建过程可能因版本而异,因此您的 Babel 任务可能需要修改以适应这些变化
【讨论】:
谢谢,我要写了。如果我找到解决方案,我会在这里分享。以上是关于如何在 VS 2019 上混淆 xamarin 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms 可以通过 Wi-FI 在 iPhone(真实设备)上工作,而无需连接到来自 VS 2019 CE Windows 10 的真实 Mac Os?
如何在 Xamarin.Forms 的主页上禁用主页点击手势而不是其他页面?
vs2019 - Xamarin:丢失“Java 开发工具包位置”的路径设置