簡體   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