技术开发 频道

DotNET的混淆器--Dotfuscator的使用说明

IT168 技术文档】

    由于.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是一个比较简单的工具(有图形界面的工具通常都不复杂),如果要求不高总能起到一些作用的。

0
相关文章