Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin项目中的模糊处理_C#_Android_Xamarin_Xamarin.android - Fatal编程技术网

C# Xamarin项目中的模糊处理

C# Xamarin项目中的模糊处理,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,正如您所知,Xamarin项目被编译成dot net dll程序集,它将被打包到apk文件中,并且可以很容易地被DotPeek等反射器反射 我的第一个问题是: 我们如何保护我们的代码 我的第二个问题是: 像SmartAssembly这样的模糊处理工具在Xamarin项目中可用吗?或者Xamarin项目不支持它们?对于第一个问题,可以使用一些工具对Xamarin代码进行模糊处理。例如,和 对于第二个问题,SmartAssembly模糊处理似乎是可能的。检查Windows Phone部件。您无法完全

正如您所知,Xamarin项目被编译成dot net dll程序集,它将被打包到apk文件中,并且可以很容易地被DotPeek等反射器反射

我的第一个问题是: 我们如何保护我们的代码

我的第二个问题是:
像SmartAssembly这样的模糊处理工具在Xamarin项目中可用吗?或者Xamarin项目不支持它们?

对于第一个问题,可以使用一些工具对Xamarin代码进行模糊处理。例如,和


对于第二个问题,SmartAssembly模糊处理似乎是可能的。检查Windows Phone部件。

您无法完全100%保护您的代码不被反编译和查看

您可以花费大量时间对所有方法和变量进行散列,然后再花费大量时间创建某种应用程序解释器,以理解您的模糊代码,但即使是这样,也会被调查、调查并最终破解

另见:


为APK保护.NET代码(.dll)的最佳方法是启用(AOT)编译:

AOT编译将应用程序IL代码(.dll)编译为本机指令。最后打包到APK中的代码是X86、arm等指令,而不是托管IL代码

AOT编译仅在企业级和更高级别的许可证中可用。

虽然AOT增加了逆向工程的难度,但它仍然不是100%的傻瓜。最终的二进制文件仍然可以从根设备中提取,并使用诸如IDA pro之类的软件进行反向工程。这比使用DotPeek困难得多,但仍然有可能

注意启用AOT编译的缺点也很重要。应用程序构建时间显著增加,因为应用程序引用的每个程序集都需要编译;我的经验表明,当启用AOT时,构建时间应该增加200%-300%


此外,AOT编译将增加最终APK大小。

Dotfuscator支持Xamarin,有关如何集成它的说明已联机(免费或免费)。从本质上讲,这一过程是:

  • 将生成配置为通过后生成目标运行Dotfuscator
  • 配置Dotfuscator:
  • 指定输入
  • 按常规/根据需要从重命名中排除内容
  • 仅使用与单声道兼容的变换(仅限Pro)
  • 配置复制任务或生成后事件以将混淆的二进制文件复制回其原始位置
  • 构建、验证混淆和测试

  • 充分披露:我为抢先解决方案工作。

    大多数(所有?)模糊处理程序都可以工作,因为您谈论的是基于CIL的程序集(与任何.Net/Mono环境的优点/缺点相同)。对于Xamarin.Android,如果您是VS Enterprise用户,还可以启用“在本机代码中启用程序集”。这将把程序集嵌入到基于NDK的运行库中。逆向工程师将不得不花更多的时间寻找要提取的点/端点,但与任何基于CIL的模糊处理一样,任何想要花时间重新进行的人都可以,无论您使用哪种模糊处理。为什么要使用iOS标记?Xamarin.iOS已经使用AOT编译为本机版本了。@LexLi感谢您的提醒。我刚刚删除了标签。Java也可以很容易地从Android.apk反编译。所以,如果你正试图达到Android提供的类似“安全性”,你已经具备了。众所周知,AOT编译只适用于企业许可证。现在Xamarin是免费的,那么它在Visual Studio社区中可用吗?感谢您强调,AOT确实只适用于企业许可证。更新答案。根据这一点:生成的本机代码与未编译的程序集一起包含在APK中。这是否意味着已编译版本和未编译版本都包含在内,而AOT对模糊处理没有真正的帮助?@matthewrdev我们可以使用下面描述的任何模糊处理程序并启用AOT编译吗?这会使反向工程变得困难吗?我对启用AOT的反编译代码没有任何更改。。。对2019年。有什么想法吗?更新:现在使用Dotfuscator Professional更容易了。在发布模式下简单构建-Dotfuscator将完成其余工作。Dotfuscator社区仍然存在,但最终也会更新。是否仍有计划将社区版移到这种新的配置方式?是;我们仍然计划将这种新的方式移植到社区中,但我还不能确定具体的时间框架。