Dotfuscator 是 Visual Studio 自带的混淆工具(Dotfuscator Community Edition,简称 CE)。它可以混淆 C# 类库(DLL)或应用程序(EXE),防止代码被反编译。
1. 检查是否已安装
Dotfuscator
。Dotfuscator
进行安装。打开 Dotfuscator
添加要混淆的 DLL
bin\Release\YourLibrary.dll
。配置混淆规则
Obfuscate
(混淆变量、方法、类名)。Control Flow
(控制流混淆)。String Encryption
(字符串加密)。运行混淆
Dotfuscated
目录下。可以让 VS 在 Release 版本编译后自动执行 Dotfuscator。
在项目文件夹创建 Dotfuscator 配置文件
bin\Release
目录下新建 dotfuscator.xml
:<dotfuscator>
<input assembly="YourLibrary.dll"/>
<rename enable="true"/>
<controlFlow enable="true"/>
<stringEncryption enable="true"/>
<antiDebug enable="true"/>
<antiTamper enable="true"/>
<output directory="Obfuscated"/>
dotfuscator>
说明:
rename="true"
→ 变量、类、方法名混淆controlFlow="true"
→ 代码逻辑混淆stringEncryption="true"
→ 字符串加密antiDebug="true"
→ 防调试antiTamper="true"
→ 防篡改bin\Release\Obfuscated
排除特定类/方法
dotfuscator.xml
中添加:<exclusions>
<type name="YourNamespace.YourClass"/>
<method name="YourMethod"/>
exclusions>
这样 YourNamespace.YourClass
和 YourMethod
不会被混淆。在 Visual Studio 配置 Release 事件
"C:\Program Files (x86)\PreEmptive\DotfuscatorCE\dotfuscatorCLI.exe" "bin\Release\dotfuscator.xml"
尝试反编译 DLL
ILSpy
或 dnSpy
打开 bin\Release\YourLibrary.dll
和 bin\Release\Obfuscated\YourLibrary.dll
。运行测试
Obfuscated
目录中的 DLL 被正确引用。如果你需要更强的保护:
Anti-Debug
、Anti-Tamper
保护。方法 | 适用场景 | 是否自动化 | 难度 |
---|---|---|---|
手动 GUI | 一次性混淆 | ❌ 需要手动运行 | ⭐⭐ |
Post-Build 事件 | 每次 Release 自动混淆 | ✅ 自动混淆 | ⭐⭐⭐ |