原創|其它|編輯:郝浩|2011-04-19 14:36:17.000|閱讀 2579 次
概述:由于.NET體系結構的特殊性,為了保護源碼,混淆器被提到了一個很高的地位,Visual Studio 2003就自帶了一個混淆器--Dotfuscator Community Edition。Dotfuscator Professional Edition能夠提供了流程模糊、字符串加密、冗余屬性的裁剪等;但是Dotfuscator Community Edition,作為一個免費的版本,功能是在世乏善可陳,除了名稱的變化之外,好像什么都不能干了。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
由于.NET體系結構的特殊性,為了保護源碼,混淆器被提到了一個很高的地位,Visual Studio 2003就自帶了一個混淆器--Dotfuscator Community Edition。
Dotfuscator Professional Edition能夠提供了流程模糊、字符串加密、冗余屬性的裁剪等;但是Dotfuscator Community Edition,作為一個免費的版本,功能是在世乏善可陳,除了名稱的變化之外,好像什么都不能干了。
1、簡單的介紹一下使用方法。
Dotfuscator的工作原理似乎是先將一個組件反編譯成為中間代碼(il),按照規則修改其中的內容,比如名稱變化,然后再重新編譯成為克執行的組件。所以最簡單的使用方法就是在Visual Studio 2003的集成環境中運行。工程編譯完畢后,通過Tools->Dotfuscator Community Edition啟動Dotfuscator,如下界面:
其中“Controil Flow”、“String Encryption”和“Removal”標簽Community版本是禁止的。所以用法也很簡單在Trigger中選擇需要混淆的組件,指定輸出目錄,構造就可以了。
a) 選擇混淆的組件
單擊Browse按鈕選擇一個dll或者exe文件即可。
b) 選擇目標輸出的路徑。
單擊構造按鈕就開始工作了。
c) 查看輸出結果
切換到Output的標簽,可以看到混淆所影響的變量和方法,如下圖。
d) 一個簡單的C#窗口應用的混淆結果
public class a : Form
{
// Methods
public a();
private void a();
protected override void a(bool A_0);
private void a(object A_0, EventArgs A_1);
private void b(object A_0, EventArgs A_1);
[STAThread]
private static void Main();
// Fields
private Button a;
private Button b;
private Container c;
}
private void a(object A_0, EventArgs A_1)
{
MessageBox.Show(this, "\u8fd9\u662f\u4e00\u6bb5\u4e2d\u6587\u7684\u6d4b\u8bd5\u7a0b\u5e8f\uff01");
}
注:字符串會轉換成為Unicode編碼的形式,這點不錯。
2、進一步了解
a) 在Options標簽下還有幾個選項,
Investigate:檢查模式,只生成轉換表查看影響的結果,不生成混淆后的輸出文件。
Library:類庫模式,在類庫模式下公共類的公共屬性和方法將不會被修改名稱。
Quiet:安靜模式,在轉換過程中沒有輸出信息。
Verbose:詳盡模式,在轉化過程中輸出詳細的信息。
b) 名稱修改的規則。
在圖形界面的“Rename”標簽里,可以手動去設定一些函數的名稱不變化,還可以選擇是否保留命名空間或者每個類的層次結構。
c) Dotfuscator的工程。
對一個或者多個.NET組件進行混淆的過程可以保存成為一個工程,工程文件就是一個XML文檔,里面包含了設置的轉換規則。
總之Dotfuscator是一個比較簡單的工具(有圖形界面的工具通常都不復雜),如果要求不高總能起到一些作用的。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載