繁体   English   中英

Xamarin项目中的混淆

[英]Obfuscation in Xamarin Projects

如你所知,Xamarin项目被编译成dot net dll程序集,它将被打包到apk文件中,并且可以很容易地被像DotPeek这样的反射器反映出来。

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

我的第二个问题是:像SmartAssembly这样的混淆工具是否可用于Xamarin项目,或者Xamarin项目是否不支持它们?

保护APK的.NET代码(.DLLS)的最佳方法是启用Ahead Of Time (AOT)编译:

在此输入图像描述

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

AOT编译仅适用于Enterprise和更高版本的许可证。

虽然AOT增加了逆向工程的难度,但它仍然不是100%万无一失。 最终的二进制文件仍然可以从root设备中提取,并使用IDA pro等软件进行逆向工程。 这比使用DotPeek困难得多,但它仍然可能。

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

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

对于您的第一个问题,可以使用一些工具来混淆您的Xamarin代码。 例如, Crypto ObfuscatorBabel ObfuscatorDotfuscator

对于您的第二个问题,似乎SmartAssembly混淆是可能的。 此处查看Windows Phone部分。

Dotfuscator支持Xamarin,并且有关如何集成它的说明在线(对于Dotfuscator Professional或免费的Community Edition )。 从本质上讲,这个过程是:

  1. 配置构建以通过AfterBuild目标运行Dotfuscator
  2. 配置Dotfuscator:
    1. 指定输入
    2. 通常/根据需要排除重命名的内容
    3. 仅使用与Mono兼容的变换(仅限专业版)
  3. 配置复制任务或生成后事件以将混淆的二进制文件复制回其原始位置
  4. 构建,验证混淆和测试

完全披露:我为PreEmptive Solutions工作。

您无法完全100%保护您的代码免受反编译和查看。

您可能花费大量时间来散列所有方法和变量,然后花费大量时间创建某种应用程序解释器来理解您的混淆代码,但即使这样也会被调查,调查并最终破解。

另请参阅: 如何保护.NET程序集免受反编译?

保护.NET代码免受逆向工程?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM