http://msdn.microsoft.com/zh-cn/library/ms227241.aspx
.NET Obfuscator -- Dotfuscator Community Edition by PreEmptive Solutions獨立 GUI 快速入門
本節向您介紹如何使用 Dotfuscator 的獨立 GUI。有關 Dotfuscator 使用者介面的完整指南,請參見 GUI 參考。
步驟 1 -- 啟動 Dotfuscator GUI
- 單擊“開始”|“程式”|“PreEmptive Solutions”|“Dotfuscator Professional Edition 4.0”|“Dotfuscator”。
- 將出現“關於 Dotfuscator Professional”對話方塊。單擊或按任意健繼續,或等待 5 秒鐘。
步驟 2 -- 建立一個預設項目
- 選擇“建立新項目”,並單擊“確定”。將出現 Dotfuscator 主專案視窗,其中“輸入”選項卡已選中。
- 在此,請選擇您希望進行模糊處理的程式集。
- 單擊“瀏覽”。
- 瀏覽至:
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\bin\Debug
- 選擇 GettingStarted.exe。
- 單擊“開啟”。該可執行檔的路徑現在顯示在“輸入檔案”下的列表框中。
- 選擇“檔案”|“儲存項目”以儲存該項目。
- 在“儲存項目”對話方塊中,定位至:
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\
- 在“檔案名稱”欄位中,輸入“Dotfuscator.xml”並單擊“儲存”。
步驟 3 -- 產生項目
- 單擊“產生”選項卡。“目標目錄”預設填充為:${configdir}\Dotfuscated。注意:${configdir} 是一個變數,它儲存指向 Dotfuscator 設定檔的路徑。
- 現在就可以對項目進行模糊處理了。單擊“產生”。稍等片刻,等待 Dotfuscator 產生 HelloWorld 應用程式的模糊處理版本。經模糊處理的程式集現在儲存在:
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\Dotfuscated
現在,您可以轉至“輸出”選項卡,並瀏覽經模糊處理的符號,或者查看 Dotfuscator 在輸出目錄中建立的重新命名對應檔 (map.xml)。如果您願意,甚至可以運行這個模糊處理後的程式。一切都已事先準備好,您只需稍加配置就可以成功地對應用程式進行模糊處理。
接下來,只需再進行少許配置,便可使用 Dotfuscator 的一些更強大的功能。
步驟 4 -- 設定項目
- 單擊“選項”選項卡。
- 將“產生進度”屬性設定為“詳細”。這將使 Dotfuscator 在“產生”選項卡的底部提供有關其執行進度的更多資訊。
- 將“發出偵錯符號”設定為“是”。設定此屬性將告知 Dotfuscator 為每一個輸出程式集建立 PDB 格式的符號檔案。調試器隨後可使用這些檔案在偵錯工作階段中提供有用的資訊。通常,這些符號檔案包含行號、源檔案名稱和局部變數名之類的資訊。這些 PDB 檔案與輸出程式集都位於輸出目錄中。
- 將“禁用重新命名”、“禁用控制流程”、“禁用字串加密”和“禁用移除”的值都設定為“否”。可以精細地控制 Dotfuscator 將向程式集應用何種轉換;以上是我們將在接下來的步驟中配置和使用的功能。
- 單擊“重新命名”選項卡。重新命名通過將方法和欄位重新命名為不可理解的名稱來對代碼進行模糊處理。預設情況下,該選項是啟用的,如果要將某些項排除在重新命名過程之外,則必須選擇這些項。對於本應用程式,您無需排除任何項。
- 單擊“重新命名選項”子選項卡。選中“使用增強重載歸納”。該功能允許在方法和欄位重新命名中最多有 15% 的冗餘。因為源語言(如 C# 和 VB)中通常不允許對方法傳回型別或欄位類型進行重載,所以這將進一步阻礙反編譯器的使用。
- 請注意,“映射輸出檔案”文字框已預設為:${configdir}\Dotfuscated\Map.xml
- 選中“作為 HTML 輸出”擷取包含有關您的應用程式的重新命名資訊和統計資訊的有用報告。此報告將輸出到與對應檔相同的目錄。預設位置為 ${configdir}\Dotfuscated\Map.html。
- 單擊“控制流程”選項卡。控制流程模糊處理對可產生有效前向(可執行檔)邏輯的分支、條件和迴圈構造(例如 if、for 和 while)進行綜合,但其結果在反編譯時間將產生非確定性語義結果。換言之,代碼與以前一樣運行,但是反編譯器無法重建原始代碼。
- 單擊“字串加密”選項卡。字串加密將打亂應用程式中的字串。例如,一些設法跳過註冊和驗證過程的人可以搜尋程式要求使用者輸入序號的字串。找到該字串後,他們就可尋找其附近的指令並更改邏輯。字串加密技術使這一過程很難進行,因為他們的搜尋結果將為空白。
- 字串加密是基於包含的,因此您必須在左窗格中顯示的樹的根部標記程式集的複選框,以包含輸入程式集中的所有方法。
- 單擊“移除”選項卡。移除操作指示 Dotfuscator 檢測並移除未使用的類型、方法和欄位。這可能在最終的應用程式中節省大量空間。
- 為了使移除操作生效,Dotfuscator 需要知道應用程式的進入點在何處。在本例中,進入點是標準“Main”方法,並且 Dotfuscator 無需額外配置即可確定這一點。
步驟 5 -- 重建項目
- 單擊“產生”;現在即可重新對項目進行模糊處理。與前面一樣,經模糊處理的程式集儲存在以下目錄中:
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\dotfuscated
步驟 6 -- 瀏覽輸出
- 單擊“輸出”選項卡。現在,您可以在樹中導航,該樹顯示了 Dotfuscator 如何對代碼進行模糊處理。
- 展開根樹和所有子樹。請注意藍色鑽石形的表徵圖。這些是重新命名的方法和欄位。這些表徵圖中每個表徵圖的父級顯示了它們的原始名稱。Dotfuscator 已經重新命名了每個方法和欄位,使得解讀每個方法的用途幾乎不可能實現。這可以極大地影響對代碼進行反向工程處理的過程。
- 注意當前反白的 SaySomething 和 set_Name 方法,還有 Name 屬性。Dotfuscator 檢測到這些項未在此應用程式中使用。其結果是,Dotfuscator 的精簡功能能夠移除這些項,從而產生更小巧的應用程式。
後續步驟
至此,您已經使用 GUI 成功進行了模糊處理,接下來您可以瞭解一下如何使用命令列介面執行相同的任務。或者,您可以詳細檢查經模糊處理的輸出程式集並查看模糊處理的效果如何。