VS自带代码混淆器DotFuscator的使用步骤

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

1.  在”vs.net studio工具”->”Dotfuscator Community Edition”,就打开了Dotfuscator软件。

2.首先遇见的时要求注册的窗口,选择”否,我不要注册”就可以了

  VS自带代码混淆器DotFuscator的使用步骤_第1张图片

3.在弹出的”选择项目类型”窗口中,选择”创建新项目”,点击”确定”按钮

VS自带代码混淆器DotFuscator的使用步骤_第2张图片

4.下面看一下帮助文件中是如何描述创建新项目功能的。

 

VS自带代码混淆器DotFuscator的使用步骤_第3张图片

 

(1)       选择触发器程序集

(a)    选择”触发器”选项卡

 

VS自带代码混淆器DotFuscator的使用步骤_第4张图片

 

(b)    点击“浏览”按钮,选择一个程序集

 

VS自带代码混淆器DotFuscator的使用步骤_第5张图片

 

(2)       指定目标目录

(a)    选择”生成”选项卡

 

VS自带代码混淆器DotFuscator的使用步骤_第6张图片

(b)选择“目标目录”中的“浏览”按钮,选择一个目录

VS自带代码混淆器DotFuscator的使用步骤_第7张图片

  (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等代码代替了。

 

VS自带代码混淆器DotFuscator的使用步骤_第8张图片

 

类里面的方法名也被替换成没有意义的符号了。

 

VS自带代码混淆器DotFuscator的使用步骤_第9张图片

 

下面是方法里面的代码,变量也被替换了。

VS自带代码混淆器DotFuscator的使用步骤_第10张图片

 

现在用ILDASM来看一下。

VS自带代码混淆器DotFuscator的使用步骤_第11张图片

下面是一段具体的代码,可以看出变量已经被替换了。

VS自带代码混淆器DotFuscator的使用步骤_第12张图片

观察一下程序集被混淆前后的大小变化,混淆前是80k,混淆后是72k,也就是说大小有变化。看来混淆器还有另外一个作用,就是减小程序集的体积。

 

5. 测试一下被混淆后的程序集是否可以正常使用。这里是错误描述!

  在使用该程序集的应用程序中重新添加引用,引用可以正常的添加,但是编译应用程序的时候,竟然提示找不到程序集。

  我想原因应该是刚刚开始添加程序集到i混淆器的时候产生的一个错误。

 

VS自带代码混淆器DotFuscator的使用步骤_第13张图片

详细信息:

 

有关调用实时(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/r/n    /r/n/r/n/r/n启用 JIT 调试后,任何未处理的异常/r/n都将被发送到此计算机上注册的 JIT 调试器,/r/n而不是由此对话框处理。/r/n

 

下面开始做如下的尝试:

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

然后重新混淆。

出现如下的错误信息

VS自带代码混淆器DotFuscator的使用步骤_第14张图片

详细信息:

 

有关调用实时(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/r/n    /r/n/r/n/r/n启用 JIT 调试后,任何未处理的异常/r/n都将被发送到此计算机上注册的 JIT 调试器,/r/n而不是由此对话框处理。/r/n

 

更刚才的错误一样。

难道需要重新启动机器?

 

(2)重新启动机器以后,重新编译程序集,然后添加到混淆器中。还是出现同样的错误。到底怎么回事啊。

 

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

(1) 程序集

VS自带代码混淆器DotFuscator的使用步骤_第15张图片

(2)类

VS自带代码混淆器DotFuscator的使用步骤_第16张图片

(3)方法

 

VS自带代码混淆器DotFuscator的使用步骤_第17张图片

 

如果能达到这种效果就好了。难道作者用的不是大众版本(Communist Edition),而是用的专业版(注册版),还是用了大众版中的其他功能?

 

7. 用了一下feiyun0112推荐的XenoCode 2005,效果还不错,具体效果如下:

 

类名变得乱糟糟

VS自带代码混淆器DotFuscator的使用步骤_第18张图片

 

方法名变得乱糟糟

VS自带代码混淆器DotFuscator的使用步骤_第19张图片

 

一部分方法看不见了:

VS自带代码混淆器DotFuscator的使用步骤_第20张图片

 

大部分方法可以看见,但是变量名变得乱糟糟:

 

VS自带代码混淆器DotFuscator的使用步骤_第21张图片

 

 

用ILDASM查看一下,出现下面的错误:

 

VS自带代码混淆器DotFuscator的使用步骤_第22张图片

根本就打不开。

 

看来除了可以看到大部分代码的结构以外,效果还是很好的。

 

但是可以断定,DVNews那个程序集不是用XenoCode 2005工具来混淆的,因为产生程序集的界面是不同的,而且DVNews那个程序集大部分函数都看不到结构,而用XenoCode 2005混淆后大部分函数可以看到结构。

 

下面是一个关键的问题,就是混淆后后的程序集能否被正常使用。

还是出现找不到引用的错误,看来又是失败的。

 

 

 

8. 针对混淆后的程序集总是无法正常被引用的问题,研究几种解决方案。

 

(1)    利用XenoCode 2005工具的依赖项功能,试验一下如果把这个程序集中所有的依赖项一起混淆,会不会有效果:

(a)    用XenoCode 2005工具的”Scan Dependency”功能,搜索依赖项,结果如下:

 

VS自带代码混淆器DotFuscator的使用步骤_第23张图片

 

(b)    然后把所有的依赖项添加进来

 

VS自带代码混淆器DotFuscator的使用步骤_第24张图片

 

 

然后生成,我的机器是512M内存,2G的CPU,结果竟然出现内存不足,根本无法执行,只好到此为止。

现在还不知道到底为什么混淆之后程序集无法正常使用,有没有其他的解决方案.

你可能感兴趣的:(Csharp)