"\u003Cdiv\u003E\u003Cp\u003E\u003Cstrong\u003EDotfuscator\u003C\u002Fstrong\u003E是一個.NET的Obfuscator。它提供企業級的應用程序保護,大大降低了盜版、知識產權盜竊和篡改的風險。Dotfuscator的分層混淆、加密、水印、自動失效、防調試、防篡改、報警和防禦技術,爲世界各地成千上萬的應用程序提供保護。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003EDotfuscator\u003C\u002Fstrong\u003E提供了一種應用程序保護的多層方法。這些層中的每一層都提供了一個重要的整體保護策略。如果一層受到損害,其他層繼續提供有效保護,使攻擊者更難以實現其目標。並且不僅有多個層,而且每個層都具有比其他混淆產品使用的簡單技術更強大的高級功能。\u003C\u002Fp\u003E\u003Cp\u003E從本文開始我們一起了解Dotfuscator如何對應用程序進行多層保護,層層遞進,大致可分爲:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003E第一層保護——Obfuscation轉換\u003C\u002Fstrong\u003E:它對編譯的代碼進行操作,使逆向工程變得困難或不可能。\u003C\u002Fli\u003E\u003Cli\u003E\u003Cstrong\u003E第二層保護——保護程序運行時發生的檢查\u003C\u002Fstrong\u003E:當程序檢測到攻擊者試圖篡改或反向工程時,它可以使用自定義邏輯進行自我防禦。\u003C\u002Fli\u003E\u003Cli\u003E\u003Cstrong\u003E其餘加強保護\u003C\u002Fstrong\u003E——包括切除和水印。\u003C\u002Fli\u003E\u003Cli\u003E\u003Cstrong\u003EDotfuscator提供某些功能幫您構建、部署和調試混淆的程序集\u003C\u002Fstrong\u003E。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Chr\u003E\u003Ch1\u003E \u003Cstrong\u003E第一層保護:Obfuscation轉換\u003C\u002Fstrong\u003E\u003C\u002Fh1\u003E\u003Ch1\u003E\u003Cstrong\u003E智能混淆\u003C\u002Fstrong\u003E\u003C\u002Fh1\u003E\u003Cp\u003E智能混淆是一種持續的工作,用於自動識別和應用混淆規則,以用於已知的API使用模式和應用程序類型。\u003C\u002Fp\u003E\u003Cp\u003E智能混淆規則很像內置重命名規則,但適用於簡單正則表達式無法描述的情況。最簡單的例子就是\u003Cem\u003Eenum\u003C\u002Fem\u003E在Dotfuscator看到\u003Cstrong\u003E\u003Cem\u003EToString()\u003C\u002Fem\u003E\u003C\u002Fstrong\u003E其中一個成員被調用時排除成員。如果用戶正在呼叫\u003Cstrong\u003E\u003Cem\u003EToString()\u003C\u002Fem\u003E\u003C\u002Fstrong\u003E該\u003Cem\u003Eenum\u003C\u002Fem\u003E成員,那麼他們可能希望它具有原始名稱。使用自定義規則排除機制無法描述此情況。\u003C\u002Fp\u003E\u003Cp\u003E當前實現可識別使用某些常用技術和模式的應用程序和庫,例如:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003EWindows Presentation Foundation(WPF)(如果爲程序集啓用了Transform XAML,則禁用)\u003C\u002Fli\u003E\u003Cli\u003EWindows Communication Foundation(WCF)\u003C\u002Fli\u003E\u003Cli\u003EWindows工作流程\u003C\u002Fli\u003E\u003Cli\u003EWindows Cardspace\u003C\u002Fli\u003E\u003Cli\u003E數據綁定的Windows窗體控件\u003C\u002Fli\u003E\u003Cli\u003E用作字符串的枚舉類型值\u003C\u002Fli\u003E\u003Cli\u003EVB應用程序中的延遲調用\u003C\u002Fli\u003E\u003Cli\u003E自定義序列化\u003C\u002Fli\u003E\u003Cli\u003E網頁服務\u003C\u002Fli\u003E\u003Cli\u003ESilverlight(如果爲程序集啓用了Transform XAML,則禁用)\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E對於這些應用程序類型,Dotfuscator的重命名和刪除功能可以盡最大努力識別重命名或刪除元素將破壞輸出應用程序的情況。然後,它會自動阻止重命名或刪除而無需其他用戶配置。\u003C\u002Fp\u003E\u003Cp\u003E智能混淆規則使用靜態分析來確定應該從重命名中排除哪些元素或將其用作刪除入口點。發現此類項目時,該規則會發出智能混淆選項卡中顯示的通知。有時,規則可以識別需要採取的操作,但無法確定要採取的具體操作,因爲靜態分析不會產生足夠的信息。發生這種情況時,規則會發出一個警告,顯示在“智能混淆”選項卡中。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E▲警告示例\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E FrameworkElementRule flagged something in Method Namespace.ContextMenu::void OnApplyTemplate() for the following reasons: Examine possible name arguments to System.Windows.FrameworkElement::FindName and manually exclude the referenced elements.\u003C\u002Fp\u003E\u003Cp\u003E 用戶應該只需按照說明操作:找到\u003Cstrong\u003EContextMenu\u003C\u002Fstrong\u003E類並查看\u003Cstrong\u003E\u003Cem\u003EOnApplyTemplate()\u003C\u002Fem\u003E\u003C\u002Fstrong\u003E方法。查找該方法中調用的所有位置FindName(string),並確定該字符串是否表示需要手動排除的輸入中的屬性。\u003C\u002Fp\u003E\u003Ch1\u003E\u003Cstrong\u003E關閉智能混淆\u003C\u002Fstrong\u003E\u003C\u002Fh1\u003E\u003Cp\u003EDotfuscator允許您關閉智能混淆。智能混淆默認情況下處於啓用狀態,在大多數情況下應保持打開狀態。如果用戶認爲更積極的混淆不會損害應用程序,則可以關閉它。有幾種方法可以將其關閉:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E將部分中的\u003Cstrong\u003E