VS自帶代碼混淆器DotFuscator的使用步驟


DotFuscator是微軟推薦的一個第三方混淆器,在vs.net2003的工具里面,但是只提供了Community Edition,如果需要使用更完全的功能,還需要注冊。目前還不清楚Community Edition和注冊后的版本有什么差別。

1.  ”vs.net studio工具”->”Dotfuscator Community Edition”,就打開了Dotfuscator軟件。

2.首先遇見的時要求注冊的窗口,選擇否,我不要注冊就可以了

   

3.在彈出的選擇項目類型窗口中,選擇創建新項目,點擊確定按鈕

4.下面看一下幫助文件中是如何描述創建新項目功能的。

 

 

(1)       選擇觸發器程序集

(a)    選擇觸發器選項卡

 

 

(b)    點擊“瀏覽”按鈕,選擇一個程序集

 

 

(2)       指定目標目錄

(a)    選擇生成選項卡

 

b)選擇“目標目錄”中的“瀏覽”按鈕,選擇一個目錄

  (3) 保存項目配置文件

 

  (4) 生成項目

 

   點擊“生成”按鈕,項目開始被生成。

 

正在加載程序集...

正在運行 D:/Program Files/Microsoft Visual Studio .NET 2003/SDK/v1.1//bin/ildasm.exe /OUT=D:/DOCUME~1/SHAREA~1/LOCALS~1/Temp//K2SystemFramework.dll.il /TEXT /NOBAR /RAWEH /QUOTEALLNAMES /UTF8 D:/K2SystemFramework.dll

正在重命名...

正在寫入程序集...

 

正在運行 D:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/ilasm.exe /OUTPUT=D:/混淆器目錄/K2SystemFramework.dll /nologo /quiet /dll /resource=D:/DOCUME~1/SHAREA~1/LOCALS~1/Temp//K2SystemFramework.dll.res D:/DOCUME~1/SHAREA~1/LOCALS~1/Temp//K2SystemFramework.dll.il

生成已完成。

 

現在用Reflector來查看混淆以后的dll:發現所有的類名都用a,a0等代碼代替了。

 

 

類里面的方法名也被替換成沒有意義的符號了。

 

 

下面是方法里面的代碼,變量也被替換了。

 

現在用ILDASM來看一下。

下面是一段具體的代碼,可以看出變量已經被替換了。

觀察一下程序集被混淆前后的大小變化,混淆前是80k,混淆后是72k,也就是說大小有變化。看來混淆器還有另外一個作用,就是減小程序集的體積。

 

5. 測試一下被混淆后的程序集是否可以正常使用。這里是錯誤描述!

  在使用該程序集的應用程序中重新添加引用,引用可以正常的添加,但是編譯應用程序的時候,竟然提示找不到程序集。

  我想原因應該是剛剛開始添加程序集到i混淆器的時候產生的一個錯誤。

 

詳細信息:

 

有關調用實時(JIT)調試而不是此對話框的詳細信息,

請參閱此消息的結尾。

 

************** 異常文本 **************

System.Reflection.ReflectionTypeLoadException: 程序集中的一個或多個類型無法加載。

   at System.Reflection.Module.GetTypesInternal(StackCrawlMark& stackMark)

   at System.Reflection.Module.GetTypes()

   at dh.a(TreeNode A_0, Module[] A_1)

   at dh.a(String A_0, String A_1)

   at ck.c(String A_0)

   at ck.a8(Object A_0, EventArgs A_1)

   at System.Windows.Forms.Control.OnClick(EventArgs e)

   at System.Windows.Forms.Button.OnClick(EventArgs e)

   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)

   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)

   at System.Windows.Forms.Control.WndProc(Message& m)

   at System.Windows.Forms.ButtonBase.WndProc(Message& m)

   at System.Windows.Forms.Button.WndProc(Message& m)

   at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)

   at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)

   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

 

 

************** 已加載的程序集 **************

mscorlib

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll

----------------------------------------

dotfuscator

    程序集版本: 1.1.1019.14028

    Win32 版本: 1.1.1019.14028

    基本代碼: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/PreEmptive%20Solutions/Dotfuscator%20Community%20Edition/dotfuscator.exe

----------------------------------------

dfengine

    程序集版本: 1.1.1019.14017

    Win32 版本: 1.1.1019.14017

    基本代碼: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/PreEmptive%20Solutions/Dotfuscator%20Community%20Edition/dfengine.DLL

----------------------------------------

dfgui

    程序集版本: 1.1.1019.14026

    Win32 版本: 1.1.1019.14026

    基本代碼: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/PreEmptive%20Solutions/Dotfuscator%20Community%20Edition/dfgui.DLL

----------------------------------------

System.Windows.Forms

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll

----------------------------------------

System

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll

----------------------------------------

dfengine.resources

    程序集版本: 1.1.1018.26530

    Win32 版本: 1.1.1018.26530

    基本代碼: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/PreEmptive%20Solutions/Dotfuscator%20Community%20Edition/zh-CHS/dfengine.resources.DLL

----------------------------------------

System.Drawing

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll

----------------------------------------

dfgui.resources

    程序集版本: 1.1.1018.26851

    Win32 版本: 1.1.1018.26534

    基本代碼: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/PreEmptive%20Solutions/Dotfuscator%20Community%20Edition/zh-CHS/dfgui.resources.DLL

----------------------------------------

System.Xml

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system.xml/1.0.5000.0__b77a5c561934e089/system.xml.dll

----------------------------------------

mscorlib.resources

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/mscorlib.resources/1.0.5000.0_zh-chs_b77a5c561934e089/mscorlib.resources.dll

----------------------------------------

System.Windows.Forms.resources

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system.windows.forms.resources/1.0.5000.0_zh-chs_b77a5c561934e089/system.windows.forms.resources.dll

----------------------------------------

System.resources

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system.resources/1.0.5000.0_zh-chs_b77a5c561934e089/system.resources.dll

----------------------------------------

K2SystemFramework

    程序集版本: 1.0.2195.17766

    Win32 版本: 1.0.2195.17766

    基本代碼: file:///D:/K2SystemFramework.dll

----------------------------------------

 

************** JIT 調試 **************

計算機的配置文件(machine.config)

 system.windows.forms 節中必須設置 jitDebugging 值。

編譯應用程序時還必須啟用/r/n調試。/r/n/r/n例如: /r/n/r/n<configuration>/r/n    <system.windows.forms jitDebugging="true" />/r/n</configuration>/r/n/r/n啟用 JIT 調試后,任何未處理的異常/r/n都將被發送到此計算機上注冊的 JIT 調試器,/r/n而不是由此對話框處理。/r/n

 

下面開始做如下的嘗試:

(1)          修改machine.config文件,設置如下的屬性:

<system.windows.forms jitDebugging="true" />

然后重新混淆。

出現如下的錯誤信息

詳細信息:

 

有關調用實時(JIT)調試而不是此對話框的詳細信息,

請參閱此消息的結尾。

 

************** 異常文本 **************

System.Reflection.ReflectionTypeLoadException: 程序集中的一個或多個類型無法加載。

   at System.Reflection.Module.GetTypesInternal(StackCrawlMark& stackMark)

   at System.Reflection.Module.GetTypes()

   at dh.a(TreeNode A_0, Module[] A_1)

   at dh.a(String A_0, String A_1)

   at ck.c(String A_0)

   at ck.a8(Object A_0, EventArgs A_1)

   at System.Windows.Forms.Control.OnClick(EventArgs e)

   at System.Windows.Forms.Button.OnClick(EventArgs e)

   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)

   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)

   at System.Windows.Forms.Control.WndProc(Message& m)

   at System.Windows.Forms.ButtonBase.WndProc(Message& m)

   at System.Windows.Forms.Button.WndProc(Message& m)

   at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)

   at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)

   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

 

 

************** 已加載的程序集 **************

mscorlib

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll

----------------------------------------

dotfuscator

    程序集版本: 1.1.1019.14028

    Win32 版本: 1.1.1019.14028

    基本代碼: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/PreEmptive%20Solutions/Dotfuscator%20Community%20Edition/dotfuscator.exe

----------------------------------------

dfengine

    程序集版本: 1.1.1019.14017

    Win32 版本: 1.1.1019.14017

    基本代碼: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/PreEmptive%20Solutions/Dotfuscator%20Community%20Edition/dfengine.DLL

----------------------------------------

dfgui

    程序集版本: 1.1.1019.14026

    Win32 版本: 1.1.1019.14026

    基本代碼: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/PreEmptive%20Solutions/Dotfuscator%20Community%20Edition/dfgui.DLL

----------------------------------------

System.Windows.Forms

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll

----------------------------------------

System

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll

----------------------------------------

dfengine.resources

    程序集版本: 1.1.1018.26530

    Win32 版本: 1.1.1018.26530

    基本代碼: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/PreEmptive%20Solutions/Dotfuscator%20Community%20Edition/zh-CHS/dfengine.resources.DLL

----------------------------------------

System.Drawing

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll

----------------------------------------

dfgui.resources

    程序集版本: 1.1.1018.26851

    Win32 版本: 1.1.1018.26534

    基本代碼: file:///D:/Program%20Files/Microsoft%20Visual%20Studio%20.NET%202003/PreEmptive%20Solutions/Dotfuscator%20Community%20Edition/zh-CHS/dfgui.resources.DLL

----------------------------------------

System.Xml

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system.xml/1.0.5000.0__b77a5c561934e089/system.xml.dll

----------------------------------------

mscorlib.resources

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/mscorlib.resources/1.0.5000.0_zh-chs_b77a5c561934e089/mscorlib.resources.dll

----------------------------------------

System.Windows.Forms.resources

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system.windows.forms.resources/1.0.5000.0_zh-chs_b77a5c561934e089/system.windows.forms.resources.dll

----------------------------------------

System.resources

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/system.resources/1.0.5000.0_zh-chs_b77a5c561934e089/system.resources.dll

----------------------------------------

Accessibility

    程序集版本: 1.0.5000.0

    Win32 版本: 1.1.4322.573

    基本代碼: file:///d:/windows/assembly/gac/accessibility/1.0.5000.0__b03f5f7f11d50a3a/accessibility.dll

----------------------------------------

K2SystemFramework

    程序集版本: 1.0.2195.20209

    Win32 版本: 1.0.2195.20209

    基本代碼: file:///D:/K2SystemFramework.dll

----------------------------------------

 

************** JIT 調試 **************

計算機的配置文件(machine.config)

 system.windows.forms 節中必須設置 jitDebugging 值。

編譯應用程序時還必須啟用/r/n調試。/r/n/r/n例如: /r/n/r/n<configuration>/r/n    <system.windows.forms jitDebugging="true" />/r/n</configuration>/r/n/r/n啟用 JIT 調試后,任何未處理的異常/r/n都將被發送到此計算機上注冊的 JIT 調試器,/r/n而不是由此對話框處理。/r/n

 

更剛才的錯誤一樣。

難道需要重新啟動機器?

 

2)重新啟動機器以后,重新編譯程序集,然后添加到混淆器中。還是出現同樣的錯誤。到底怎么回事啊。

 

6.上面的方法已經把程序集混淆到了一定的程度,不過我看到過一個被混淆后的程序集根本就不能用Reflector查看,效果如下:

(1) 程序集

2)類

3)方法

 

 

如果能達到這種效果就好了。難道作者用的不是大眾版本(Communist Edition),而是用的專業版(注冊版),還是用了大眾版中的其他功能?

 

7. 用了一下feiyun0112推薦的XenoCode 2005,效果還不錯,具體效果如下:

 

類名變得亂糟糟

 

方法名變得亂糟糟

 

一部分方法看不見了:

 

大部分方法可以看見,但是變量名變得亂糟糟:

 

 

 

ILDASM查看一下,出現下面的錯誤:

 

根本就打不開。

 

看來除了可以看到大部分代碼的結構以外,效果還是很好的。

 

但是可以斷定,DVNews那個程序集不是用XenoCode 2005工具來混淆的,因為產生程序集的界面是不同的,而且DVNews那個程序集大部分函數都看不到結構,而用XenoCode 2005混淆后大部分函數可以看到結構。

 

下面是一個關鍵的問題,就是混淆后后的程序集能否被正常使用。

還是出現找不到引用的錯誤,看來又是失敗的。

 

 

 

8. 針對混淆后的程序集總是無法正常被引用的問題,研究幾種解決方案。

 

(1)    利用XenoCode 2005工具的依賴項功能,試驗一下如果把這個程序集中所有的依賴項一起混淆,會不會有效果:

(a)    用XenoCode 2005工具的”Scan Dependency”功能,搜索依賴項,結果如下:

 

 

(b)    然后把所有的依賴項添加進來

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM