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

今天尝试了下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

转载于:https://my.oschina.net/Tsybius2014/blog/1544293

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值