SuperAPI AI 工具集

dotnet-reverse

安全与审计

查看项目

更新于 10-20 02:33

技能介绍

本技能提供 .NET / C# 二进制逆向工程的系统化作业规范,面向分析 .NET 程序集、混淆过的 C# 产品以及红队 Sharp* 工具等场景。

用途

当任务涉及识别与逆向 .NET/C# 编译产物(托管 PE、.exe、.dll),分析 Rubeus、SharpHound、SharpShell 等红队工具链,对 ConfuserEx、SmartAssembly、Babel、Eazfuscator、.NET Reactor 等混淆器进行脱壳,逆向 .NET loader、info-stealer 或 RAT 的解密与 C2 逻辑,或对 C# 程序做判断修改、常量修改、keygen 等补丁时,优先使用本技能。

如果目标是纯 native 二进制(C/C++/Go/Rust 编译、无 CLR)或 IL2CPP 编译的 Unity 游戏、NativeAOT 产物,则不适用,应改用 reverse-engineering、ida-reverse 或 radare2 等技能。

核心原则

  1. 先识别再下手:先确认目标是 .NET 托管程序(PE 头 CLR、#~ / #Strings 流、mscoree _CorExeMain),再决定使用 dnSpy 而非 IDA。
  2. IL 优先于 C#:dnSpyEx 的 C# 反编译器可能丢失或扭曲信息(编译器生成的状态机、async/await、yield),关键判断与补丁必须切换到 IL 编辑器,C# 视图只用于快速浏览。
  3. de4dot 先行:遇到混淆器先 de4dot 脱一轮再做静态分析。
  4. MCP 联动:若环境注册了 dnSpy MCP(dnspy_* 工具),优先通过 MCP 完成反编译和 IL 检查。
  5. 证据化输出:脱混淆产物、提取的配置/C2/key、补丁 diff 都要落盘保存。

主要能力与工具链

  • 反编译、调试与补丁:首选 dnSpyEx,是唯一带 IL 编辑器的 GUI,老 dnSpy 已停更。
  • 轻量 CLI / headless 反编译:ILSpy(ilspycmd),适合批量、脚本化、Linux/macOS。
  • 脱混淆:de4dot,处理 ConfuserEx 全家桶、SmartAssembly 等主流壳。
  • 混淆器识别:Detect It Easy (DIE) / file,先判断壳类型再决定 de4dot 参数。
  • 编程化操作 IL:dnlib,可写 C# 脚本批量改 metadata 或提取字符串解密器。
  • AI 直接操作:dnSpy MCP 的 dnspy_decompile / dnspy_inspect_il 等工具面。

前置环境:Windows 主机安装 dnSpyEx + de4dot(choco 或 release);Linux/macOS 使用 ilspycmd + dotnet runtime。

使用方式:六阶段工作流

  1. Identify(识别 .NET):通过 CLR 头、mscoree 导入、metadata 流等标志确认托管身份。NativeAOT 例外,编译为 native,无 CLR 头,需转 native 逆向。
  2. Detect(检测混淆器):用 DIE 或 dnSpyEx 观察乱码类名与控制流变形,识别混淆器类型。
  3. Deobfuscate(脱混淆):运行 de4dot target.exe -o target-clean.exe,必要时指定 --type cfze 或 --type sa。多层混淆或 anti-tamper 可能需先 patch 再脱。
  4. Static Analyze(静态分析):dnSpyEx 加载脱壳后样本,C# 视图快速定位,IL 视图验证关键判断、加密逻辑与状态机。
  5. Dynamic(动态调试):用 dnSpyEx 调试器下断点,观察运行时解密后的字符串、C2 地址与配置。.NET 动态调试比 native 友好,优先动态而非死磕静态。
  6. Patch(按需修改):通过 Edit Method (C#) 或 Edit IL 修改判断(ldc.i4.0 → ldc.i4.1)、常量或删除校验,File → Save Module 保存。IL 补丁可靠性高于 C# 补丁。

适用场景

.NET / C# 二进制逆向、dnSpy 分析、ConfuserEx / SmartAssembly / Babel 脱混淆、Sharp* 工具分析、.NET malware / loader / info-stealer 逆向、C# 程序补丁 / keygen / 修改判断。

限制

  • NativeAOT 与裁剪构建会丢失大部分元数据,需按 native 风格逆向。
  • 部分商业混淆器需要手动脱壳步骤。
  • 不适用于 IL2CPP 游戏、纯 native PE;需要符号/函数批量迁移时转 binary-diff,需要攻击路径图时转 diagram-generator。
  • 本技能改编自 zhaoxuya520/reverse-skill(MIT)。