什麼是智慧混淆?.NET混淆器 Dotfuscator保護機制詳解!
Dotfuscator是一個.NET的Obfuscator。它提供企業級的應用程式保護,大大降低了盜版、智慧財產權盜竊和篡改的風險。Dotfuscator的分層混淆、加密、水印、自動失效、防除錯、防篡改、報警和防禦技術,為世界各地成千上萬的應用程式提供保護。
Dotfuscator提供了一種應用程式保護的多層方法。這些層中的每一層都提供了一個重要的整體保護策略。如果一層受到損害,其他層繼續提供有效保護,使攻擊者更難以實現其目標。並且不僅有多個層,而且每個層都具有比其他混淆產品使用的簡單技術更強大的高階功能。
從本文開始我們一起了解Dotfuscator如何對應用程式進行多層保護,層層遞進,大致可分為:
- 第一層保護——Obfuscation轉換:它對編譯的程式碼進行操作,使逆向工程變得困難或不可能。
- 第二層保護——保護程式執行時發生的檢查:當程式檢測到攻擊者試圖篡改或反向工程時,它可以使用自定義邏輯進行自我防禦。
- 其餘加強保護——包括切除和水印。
- Dotfuscator提供某些功能幫您構建、部署和除錯混淆的程式集。
第一層保護:Obfuscation轉換
智慧混淆
智慧混淆是一種持續的工作,用於自動識別和應用混淆規則,以用於已知的API使用模式和應用程式型別。
智慧混淆規則很像內建重新命名規則,但適用於簡單正則表示式無法描述的情況。最簡單的例子就是enum
當前實現可識別使用某些常用技術和模式的應用程式和庫,例如:
- Windows Presentation Foundation(WPF)(如果為程式集啟用了Transform XAML,則禁用)
- Windows Communication Foundation(WCF)
- Windows工作流程
- Windows Cardspace
- 資料繫結的Windows窗體控制元件
- 用作字串的列舉型別值
- VB應用程式中的延遲呼叫
- 自定義序列化
- 網頁服務
- Silverlight(如果為程式集啟用了Transform XAML,則禁用)
對於這些應用程式型別,Dotfuscator的重新命名和刪除功能可以盡最大努力識別重新命名或刪除元素將破壞輸出應用程式的情況。然後,它會自動阻止重新命名或刪除而無需其他使用者配置。
智慧混淆規則使用靜態分析來確定應該從重新命名中排除哪些元素或將其用作刪除入口點。發現此類專案時,該規則會發出智慧混淆選項卡中顯示的通知。有時,規則可以識別需要採取的操作,但無法確定要採取的具體操作,因為靜態分析不會產生足夠的資訊。發生這種情況時,規則會發出一個警告,顯示在“智慧混淆”選項卡中。
▲警告示例
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. |
使用者應該只需按照說明操作:找到ContextMenu類並檢視OnApplyTemplate()方法。查詢該方法中呼叫的所有位置FindName(string),並確定該字串是否表示需要手動排除的輸入中的屬性。
關閉智慧混淆
Dotfuscator允許您關閉智慧混淆。智慧混淆預設情況下處於啟用狀態,在大多數情況下應保持開啟狀態。如果使用者認為更積極的混淆不會損害應用程式,則可以關閉它。有幾種方法可以將其關閉:
- 將部分中的<option>設定更改<smartobfuscation>為disable。
- 從Visual Studio UI中的“ 專案屬性”對話方塊中。
- 從配置編輯器中的“設定”選項卡。
控制智慧混淆報告的詳細程度
Dotfuscator允許您控制智慧混淆報告的詳細程度。您可以選擇僅報告所有操作和警告,警告,或完全取消報告。有幾種方法可以設定報告級別:
- 在配置檔案中的元素上設定verbosity屬性<smartobfuscationreport>。
- 從Visual Studio UI中的“ 專案屬性”對話方塊中。
- 從配置編輯器中的“設定”選項卡。
儲存報告
Dotfuscator允許您將智慧混淆報告儲存到檔案中,除了顯示它。您可以通過在以下任何位置指定檔案路徑,指示Dotfuscator將報告儲存到檔案中:
- 一個檔案的內元素<smartobfuscationreport>在配置檔案中的元素。
- 從Visual Studio UI中的“ 專案屬性”對話方塊中。
- 從配置編輯器中的“設定”選項卡。
阻止重新命名舊版報告
在使用新版本覆蓋之前,Dotfuscator會自動重新命名具有相同名稱的現有Smart Obfuscation報告。如果您不想要此行為,有幾種方法可以指示Dotfuscator在覆蓋之前不要重新命名現有的刪除報告:
- 將配置檔案中元素的overwrite屬性設定<smartobfuscationreport>為true。
- 從Visual Studio UI中的“ 專案屬性”對話方塊中。
- 從配置編輯器中的“設定”選項卡。
Dotfuscator以XML格式生成智慧混淆報告,該報告列出了智慧混淆過程標記的所有專案。請記住,報告的內容反映了智慧混淆報告詳細程度設定 - 如果詳細程度設定為僅警告或無,則可以從報告中省略由智慧混淆標記的專案。每個條目代表一個由智慧混淆標記的專案,並描述專案的內容及其被排除的原因,以及指示標記操作是警告還是通知的屬性。
— 持續更新中