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__b
----------------------------------------
System
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.573
基本代码: file:///d:/windows/assembly/gac/system/1.0.5000.0__b
----------------------------------------
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__b
----------------------------------------
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__b
----------------------------------------
mscorlib.resources
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.573
基本代码: file:///d:/windows/assembly/gac/mscorlib.resources/1.0.5000.0_zh-chs_b
----------------------------------------
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_b
----------------------------------------
System.resources
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.573
基本代码: file:///d:/windows/assembly/gac/system.resources/1.0.5000.0_zh-chs_b
----------------------------------------
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)调试而不是此对话框的详细信息,
请参阅此消息的结尾。
************** 异常文本