[英]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.