用途:在确认目标为 .NET 程序集后,把 CIL 还原为可读 C#,处理 ConfuserEx、SmartAssembly 等 .NET 混淆,定位注册码校验、网络 URL、解密 key 等逻辑,也用于 .NET 恶意样本的静态还原。非托管 PE、Java、脚本类目标不适用;混合模式程序集的 native 部分需转其他技能。
主要能力:dnSpy/ILSpy 反编译浏览与搜索、dnSpy 方法编辑与断点调试、de4dot 自动或指定混淆器去混淆、单文件 bundle 解包、字符串与 API 定位、dotnet-dump 运行时数据提取。
必要用法:先识别程序集,file 输出含 "Mono/.Net assembly" 或 strings 见 mscoree 导入;也可用 pefile 检查 PE 数据目录第 15 项(COM Descriptor)非 0。工具安装:dotnet SDK 用 apt install dotnet-sdk-8.0、dnf install dotnet-sdk-8.0、pacman -S dotnet-sdk、brew install --cask dotnet-sdk 或 choco install dotnet-sdk;ILSpy CLI 用 dotnet tool install -g ilspycmd,GUI 取 GitHub release;dnSpy 仅 Windows,解压运行 dnSpy.exe;de4dot 在 Linux/macOS 需 mono,运行 mono de4dot.exe --help;单文件解包用 dotnet tool install -g sfextract,命令 sfextract sample.exe -o extracted/。反编译可用 ilspycmd sample.exe 或 ilspycmd sample.exe -p -o decompiled/。去混淆先干跑 mono de4dot.exe -d sample.exe,再 mono de4dot.exe -p ce sample.exe。动态侧在沙箱内执行,Frida 需 pip install frida-tools,dotnet-dump 用 dotnet tool install -g dotnet-dump 后 collect/analyze。
限制与坑:dnSpy 仅 Windows;de4dot 对旧版或新混淆器可能失效,需换社区 fork 或手动复刻解密;自包含单文件需先解包;混合模式与 NativeAOT 无托管结构需转 native 分析;R2R 程序集 IL 与执行体可能不一致;.NET 字符串为 UTF-16LE,需用 strings -e l 搜索。动态步骤默认进沙箱。