使用Dotfuscator混淆你的.net程序

简介

众所周知C#等net框架的程序是无法防止反编译的,但可以通过混淆,让反编译出来的代码非常难看.
Dotfuscator是微软推荐使用的第三方混淆器,用来保护你的net程序.可以在安装VS的时候顺带安装它,也可以从官网下载到独立安装包.
官网

本文将简单的测试它的效果,并记录测试过程

首先写段代码用来测试

新建个winform工程,添加个定时器,设为100毫秒触发一次:

481370-20180719145358802-242881751.png

481370-20180719145322868-304759767.png

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {


        }

        //一段注释
        private void timer1_Tick(object sender, EventArgs e)
        {
            var datetime = DateTime.Now;

            var strprogress = "";
            var second = DateTime.Now.Second;
            for (var i = 0; i < second; i++)
            {
                strprogress += "■";
            }
            Text = $"当前时间为:{datetime.ToString("HH:mm")} {strprogress}";
        }

    }//End Class
}

编译出EXE

481370-20180719145605559-1342250322.png

用ILSpy打开

481370-20180719155701977-280944936.png

481370-20180719145808679-2130876052.png

可以看到,代码除了注释,都是可以反编译出来的.

安装Dotfuscator

在VS安装工具中找到它

如果你用的版本和我一样是VS2017的话,你应该能在安装工具里找到这个:
481370-20180719150215160-1394291053.png
安装它!

在VS的菜单中找到它

上一步完成后,你将发现这里多了这个:
481370-20180719150340135-1805963456.png
打开它!

注册试用版

第一次运行Dotfuscator会收集你的信息用来注册试用版,你可以在这填写信息,并获取一个注册码(会发到你的邮箱)
你也可以不填写,也能正常试用Dotfuscator
481370-20180719154936454-290261057.png

混淆过程

将编译出来的程序添加进去

左边菜单,点击"输入",将切换到这个界面,点绿色加号,添加文件:

如果添加文件时,界面显示很奇怪,比如添加的文件不显示,可以试试先保存配置,再读取配置.

481370-20180719151553346-2092081345.png

生成

点击这里,可开始混淆:
481370-20180719151956220-307358325.png
481370-20180719152031656-1519744607.png

输出目录

可以看到输入exe所在的目录多了个文件夹

481370-20180719152105237-1124670274.png

里面是混淆过的EXE:

481370-20180719152136064-1885620573.png

查看效果

测试混淆的程序是否可正常运行

481370-20180719152208078-90265685.png

尝试反编译

481370-20180719152445472-537264913.png
可以看到 已编译的 .NET 应用内的类型、字段、属性、方法和参数名称 被改成了无法从名字认出作用的符号.
由于该软件是收费软件,我使用的只是试用版,如果购买正式版,能开放更强的混淆功能,如"字符串加密"等功能.如果有需要,建议使用正式版.

找一个大点的程序试试

由于上面使用的程序测试代码比较短,看不出多好的效果,我这找了个相对比较大的net程序,来试试:

混淆前的代码:

481370-20180719154509396-1213617134.png

481370-20180719154046174-739149525.png

481370-20180719153805784-1953988070.png

混淆后的代码

481370-20180719154548426-1938176372.png

481370-20180719154233267-247579967.png

481370-20180719153936678-1369557909.png

481370-20180719154713858-989586299.png

可以看到很多地方简直面目全非,认不出啥是啥了.给修改带来了很大的困难

转载于:https://www.cnblogs.com/DragonStart/p/9336300.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值