模糊處理使用 Dotfuscator 建立的應用程式(視覺工作室 2022 版本)

更新頁 :
頁面創建日期 :

概述

由於基於 .NET 系列框架的應用程式以稱為通用中間語言的形式創建,因此可以使用拆解工具等以接近原始原始原始程式碼的方式讀取應用程式。 本節介紹 Visual Studio 附帶的模糊處理工具 Dotfuscator 的免費版本如何將混淆轉換為不容易讀取的格式,如類和方法名稱。

正如我們使用視覺工作室 2022 中討論的,它也可以與其他版本的 Dotfuscator 一起使用。

操作環境

Visual Studio
  • Visual Studio 2022

關於 Dotfuscator 的更多資訊

Dotfuscator 是一種模糊處理工具,用於在拆解在 .NET 系列框架(以下簡稱 .NET)中創建的應用程式時使原始程式碼難以讀取。 Dotfuscator 包括 Visual 工作室附帶的免費和付費零售版本。

免費版本在許多功能有限或 Visual Studio 未啟動之前不可用,但只要安裝了 Visual 工作室,任何人都可以使用它。 雖然有很多強大的模糊處理功能,這是在付費版本中不存在的,但它以普通人很難觸及的價格提供。

Dotfuscator 的功能、價格和版本因版本而異,因此請訪問以下主頁瞭解更多資訊。

關於拆解

前面提到,在 .NET 中創建的應用程式很容易被拆解和讀取原始原始原始程式碼,但實際情況是,當您拆解 .exe 檔(或 .dll 檔)時,原始原始原始程式碼(如命名空間、類名稱和方法名稱)幾乎可以重現,如下圖所示。

要模糊的程序類型

它主要面向分發和運行給未指定用戶的程式。 例如,桌面應用程式。 相反,模糊處理對於難以直接訪問程序檔的 Web 應用程式來說並不那麼重要。

這一次,我在 WPF 專案中查看了桌面應用程式。

安裝多普穆斯卡托

此應用程式是 Visual Studio 2022 附帶的,但不包括在標準安裝中(可能從一開始就安裝在以前的 Visual Studio 中)。

要添加多普斯卡托,請執行以下操作: 啟動視覺工作室,然後從「工具」中選擇「獲取工具和功能」。

從上面的選項卡中選擇「單個元件」,選中「代碼工具」組中的「預Emptive保護 - Dotfuscator」,然後按下右下角的安裝按鈕。 此時,請關閉虛擬工作室主控台一次。

模糊處理程式

提供有關如何使這些名稱難以理解和模糊處理的過程。

在 Visual Studio 中創建應用程式,然後生成 .exe 檔。 創建 dll 檔。 到目前為止,它與創建常規應用程式相同。 您建立的應用將針對您在發佈生成中創建的應用。 (因為它通常不會在調試中公開)

創建 .exe 和 .dll 后,從「視覺工作室」功能表中選擇「工具」,然後選擇「預保護 - 多普魯斯卡托社區」。。

將顯示註冊螢幕,但如果不需要,請按兩下取消按鈕,因為它不是必需的。

按兩下確定按鈕。

將啟動「修補程式」。 此應用程式單獨運行,因此您可以模糊處理與當前打開的專案無關的檔。 (如果應用程式本身是免費版本,則假定 Visual 工作室已啟動。 )

作為範例,我將模糊處理 .NET 6.0 WPF 應用程式的專案,這些專案是預設生成的。

從左側清單中選擇「輸入」,然後按下「+」 按鈕。

選擇要模糊處理的程式檔。 到目前為止,在 .NET 框架中創建的應用程式通常混淆 .exe,但在 .NET 和 .NET Core 中,程式的實體通常為 .dll。 NET WPF 應用程式也.dll,因此請選擇 .dll。

添加到清單中。 如果有多個 DLL,請添加多個 DLL。

添加檔後,按兩下工具列中的“生成”按鈕。

指定模糊處理專案檔的儲存位置。 位置可以是任意的,但它也是模糊程序的輸出位置。 它保存您的輸入,如果您希望再次模糊處理,您將打開此模糊處理項目檔。 擴展名為“。 xml“。

生成已啟動,並在下面的消息中顯示“生成已完成。”表示成功完成。 屏幕顯示生成日誌和模糊類和變數的清單。

從左側的清單中選擇“結果”,瞭解有關類和方法名稱如何更改的詳細資訊。

在右側樹的類或方法名稱中,如“->”,則名稱是模糊處理的名稱。 通過將類或方法名稱更改為無意義的名稱,可以使原始程式碼的內容難以閱讀,即使它們被拆解。

模糊處理的程式在保存項目檔的位置創建名為“受難處理”的資料夾,並存儲在其中。

由於 Map.xml 是模糊處理的結果檔,因此可以安全地將其刪除。

由於 .NET 6.0 WPF 不能單獨啟動 DLL,因此請嘗試將生成輸出期間生成的“XXXX.exe”和“XXXX.運行時配置.json”複製到同一檔夾中並啟動它。 如果可以成功啟動,則沒有問題。 如果無法啟動,則可能是檔不足或混淆導致程式不一致。

我認為,當你分析實際模糊的程式時,你會發現一些模糊的痕跡。 下圖的第一張是模糊處理前,第二張是模糊處理后。

請注意,.NET 庫中定義的類名稱等作為框架存在,因此不應重命名。

這一次,我模糊處理了創建的默認專案,所以有些圖像幾乎未混淆,但我認為模糊處理的效果會變得清晰,因為專案越大,您自己的類就越多。

此外,雖然我們這次在免費版本中提供了步驟,但付費版本允許您執行更複雜的模糊處理,並防止拆解本身。 但是,由於混淆也可能發生各種負面影響,因此在進行模糊處理時,必須考慮從設計開始就正常工作。

排除模糊處理

如果不想混淆任何類或屬性名稱,則可以將其排除。

載入程式集時,從螢幕左側選擇“重命名”和“排除”。 顯示程式集的內容,並選中不想混淆的內容。

雖然可以在更精細的級別排除模糊處理,但我認為按命名空間進行調整會更容易。

庫模式

選擇輸入的程式集後,您將看到「庫模式」處於選中狀態。

“庫模式”用於其他程式可能調用的 DLL 等。 選中后,其他程式調用的公共類和屬性將從模糊處理中排除。

但是,由於通常很少從其他程序公開通用調用的庫,並且經常混淆單獨運行的應用程式,因此基本上可以取消選中此檢查。

關於模糊處理單個檔案化.exe(未確認)

有關此項的資訊,請參閱Visual工作室 2022,目前尚未確認。

您可能會對 MSBuild 進行模糊處理,但由於資訊較少,我們將其擱置。