使用VS2012自带的Dotfuscator工具对C#代码进行混淆

原创
2017/09/27 16:28
阅读数 3.7K

今天尝试了下Visual Studio自带的代码混淆工具Dotfuscator,将一些心得记录如下。

先建立一个命令行应用程序,输出hello world字符。

在命令行窗口中执行此程序,输出hello world字符,用ildasm打开此程序,可查看到程序的il码

打开代码混淆工具,在VisualStudio中找到TOOLS菜单下的

PreEmptive Dotfuscator and Analytics

第一次打开时会要求你接受一个协议,选择Yes即可

点击最下面的 Read our online privacy policy 可打开下面网页:

https://www.preemptive.com/company/privacy

进入Dotfuscator工具后,界面如下所示

在Inputs中设置要进行混淆的exe和dll

按ctrl+s保存配置到xml文件中

保存完毕后,单击绿色箭头按钮即可进行混淆操作

输出界面打印的文字如下:

Loading Assemblies...

Running C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\ildasm.exe /OUT=C:\Users\Administrator\AppData\Local\Temp\~CodeObf.0\CodeObfuscationTest.exe.il /TEXT /NOBAR /RAWEH /QUOTEALLNAMES /UTF8 /FORWARD "C:\Users\Administrator\Documents\Visual Studio 2012\Projects\CodeObfuscationTest\CodeObfuscationTest\bin\Debug\CodeObfuscationTest.exe"


Processing instrumentation attributes...
WARNING: Send Analytics Messages is enabled, but no SetupAttribute was found. No analytics code will be injected into this application.

Analyzing Markup...

Renaming...

Updating Markup...

Writing map file to C:\Users\Administrator\Documents\Visual Studio 2012\Projects\CodeObfuscationTest\CodeObfuscationTest\bin\Debug\Dotfuscated\Map.xml

Writing Assemblies...

Running C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe /OUTPUT="C:\Users\Administrator\Documents\Visual Studio 2012\Projects\CodeObfuscationTest\CodeObfuscationTest\bin\Debug\Dotfuscated\CodeObfuscationTest.exe" /nologo /quiet /resource=C:\Users\Administrator\AppData\Local\Temp\~CodeObf.0\CodeObfuscationTest.exe.res  C:\Users\Administrator\AppData\Local\Temp\~CodeObf.0\CodeObfuscationTest.exe.il


Build Finished.
Build Statistics    Total  Renamed  Percent Renamed
Types:                  1        1          100.00%
Methods:                2        1           50.00%
Fields:                 0        0            0.00%

生成完毕后,在Dotfuscator.xml同一目录下,会出现Dotfuscated目录,目录中的exe和dll文件即为混淆后的文件,将此文件替换掉原文件即可

混淆后程序的il码如下图所示,可看到标识符被修改了

上面的代码太过简单,我们另写一段打印九九乘法表的代码,进行混淆

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeObfuscationTest
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 1; i <= 9; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write(string.Format("{0}*{1}={2} ", i, j, i * j));
                }
                Console.WriteLine();
            }
        }
    }
}

左边是混淆前的il码,右边是混淆后的il码

还有几点需要注意的问题:

1、Dotfuscator工具支持使用命令行打开,但我还没找到使用命令行运行代码混淆功能的方法

2、Dotfuscator工具在电脑中的位置:VisualStudio安装目录\PreEmptive Solutions\Dotfuscator and Analytics Community Edition,工具名称为dotfuscator.exe

END

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部