我需要保护应用程序上的业务逻辑,这是使用xamarin表单创建的。我在论坛上以及有关Babel和ConfuserEx的信息中进行搜索,但无法正常运行。
Case Babel
我已经安装了演示SDK,并且已经更新了环境变量的路径。在Android项目上,我添加了以下几行,如示例和书籍“ Android的Xamarin移动开发食谱”
所示<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扩展,并且尝试在普通项目上对其进行激活,并且对其进行了模糊处理,但是当我存档以生成apk时,不会对其进行模糊处理。我曾尝试在Android Project而不是通用Project上执行此操作,但是它不起作用。您能给我一些建议来混淆应用程序吗?我想用Android,iOS和UWP应用来做到这一点。因为默认情况下,uwp,droid和ios很容易进行逆向工程,不是吗?
由于默认情况下,uwp,droid和ios很容易反转工程,不是吗?
假设这是问题,答案是您主要是错误的。
AOT编译的程序集不容易逆向工程,对于UWP和iOS,AOT是必需的,而在Android上,默认情况下现在已启用部分AOT,而在VS Enterprise上也可以启用完整的AOT。
说到没有什么不能逆向工程,您仍然可以在AOT编译的顶部添加混淆以使其更加困难,只是没有内置的解决方案(据我所知也没有免费的解决方案),因此您可以选择自己喜欢的解决方案,此处不推荐此类建议。
最近3年来,我一直在Xamarin.Android应用程序中使用Babel。它运作得非常好。如果您有问题,请联系Babel的Alberto。他提供了极大的支持。大多数问题是由于Xamarin的构建过程可能因发行版本而异,因此Babel任务可能需要进行修改以适应这些更改。