簡介
眾所周知C#等net框架的程序是無法防止反編譯的,但可以通過混淆,讓反編譯出來的代碼非常難看.
Dotfuscator是微軟推薦使用的第三方混淆器,用來保護你的net程序.可以在安裝VS的時候順帶安裝它,也可以從官網下載到獨立安裝包.
官網
本文將簡單的測試它的效果,並記錄測試過程
首先寫段代碼用來測試
新建個winform工程,添加個定時器,設為100毫秒觸發一次:


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

用ILSpy打開


可以看到,代碼除了注釋,都是可以反編譯出來的.
安裝Dotfuscator
在VS安裝工具中找到它
如果你用的版本和我一樣是VS2017的話,你應該能在安裝工具里找到這個:

安裝它!
在VS的菜單中找到它
上一步完成后,你將發現這里多了這個:

打開它!
注冊試用版
第一次運行Dotfuscator會收集你的信息用來注冊試用版,你可以在這填寫信息,並獲取一個注冊碼(會發到你的郵箱)
你也可以不填寫,也能正常試用Dotfuscator

混淆過程
將編譯出來的程序添加進去
左邊菜單,點擊"輸入",將切換到這個界面,點綠色加號,添加文件:
如果添加文件時,界面顯示很奇怪,比如添加的文件不顯示,可以試試先保存配置,再讀取配置.

生成
點擊這里,可開始混淆:


輸出目錄
可以看到輸入exe所在的目錄多了個文件夾

里面是混淆過的EXE:

查看效果
測試混淆的程序是否可正常運行

嘗試反編譯

可以看到 已編譯的 .NET 應用內的類型、字段、屬性、方法和參數名稱 被改成了無法從名字認出作用的符號.
由於該軟件是收費軟件,我使用的只是試用版,如果購買正式版,能開放更強的混淆功能,如"字符串加密"等功能.如果有需要,建議使用正式版.
找一個大點的程序試試
由於上面使用的程序測試代碼比較短,看不出多好的效果,我這找了個相對比較大的net程序,來試試:
混淆前的代碼:



混淆后的代碼




可以看到很多地方簡直面目全非,認不出啥是啥了.給修改帶來了很大的困難
