[英]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 Obfuscator , Babel Obfuscator和Dotfuscator
对于您的第二个问题,似乎SmartAssembly混淆是可能的。 在此处查看Windows Phone部分。
Dotfuscator支持Xamarin,并且有关如何集成它的说明在线(对于Dotfuscator Professional或免费的Community Edition )。 从本质上讲,这个过程是:
完全披露:我为PreEmptive Solutions工作。
您无法完全100%保护您的代码免受反编译和查看。
您可能花费大量时间来散列所有方法和变量,然后花费大量时间创建某种应用程序解释器来理解您的混淆代码,但即使这样也会被调查,调查并最终破解。
另请参阅: 如何保护.NET程序集免受反编译?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.