# Dotnet Reverse

.NET / C# 二进制逆向。当目标是 .NET assembly（PE 头含 CLR、.exe/.dll 托管程序）、C# 编译产物（含 NativeAOT）、红队...

- Repository: https://github.com/zhaoxuya520/reverse-skill (43923 stars)
- Category: Security
- License: MIT
- Last updated: 2026-09-22
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add zhaoxuya520/reverse-skill --skill dotnet-reverse -g -a claude-code -y`
Codex: `npx skills add zhaoxuya520/reverse-skill --skill dotnet-reverse -g -a codex -y`
Cursor: `npx skills add zhaoxuya520/reverse-skill --skill dotnet-reverse -g -a cursor -y`
Gemini CLI: `npx skills add zhaoxuya520/reverse-skill --skill dotnet-reverse -g -a gemini-cli -y`

## Description

.NET / C# 二进制逆向。当目标是 .NET assembly（PE 头含 CLR、.exe/.dll 托管程序）、C# 编译产物（含 NativeAOT）、红队 Sharp* 工具（Rubeus / SharpHound / SharpHound 等）、.NET 混淆程序（ConfuserEx / SmartAssembly / Babel / Eazfuscator）、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot，需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制（走 reverse-engineering / ida-reverse）。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# .NET / C# 逆向作业规范

## ACTION REQUIRED（读完立刻执行）

1. `NOW`: 用 DIE/`file`/CLR 头确认目标是 .NET 托管（否则 SWITCH 到 `ida-reverse/` / `reverse-engineering/`）
2. `NOW`: 若疑似混淆 → 先 `de4dot` 脱壳，产出 `*-clean.exe`，保留原始样本
3. `NEXT`: dnSpyEx（或 dnSpy MCP / `ilspycmd`）静态：C# 浏览 + **IL 视图**看关键判断
4. `ACT`: 需要明文/C2 时动态调试；需要改逻辑时 **IL patch** 优先于 C# 重编译
5. 阶段结束给用户 3, 6 项下一步菜单（含导出报告）

## 适用范围

当任务属于以下场景时优先使用本 skill：

- 识别并逆向 .NET / C# 编译产物（托管 PE / .exe / .dll）
- 分析红队 Sharp* 工具链（Rubeus、SharpHound、SharpShell 等）
- 脱混淆 ConfuserEx / SmartAssembly / Babel / Eazfuscator / .NET Reactor 等壳
- 逆向 .NET loader / info-stealer / RAT 的解密与 C2 逻辑
- 对 C# 程序做 patch（改判断、改常量、keygen）
- 分析 IL2CPP 之前的 Mono/Unity 托管层（注意：IL2CPP 编译后是 native，走 `reverse-engineering/` + seed-014）

如果目标是纯 native 二进制（C/C++/Go/Rust 编译、无 CLR），请改用 `reverse-engineering/`、`ida-reverse/` 或 `radare2/`。

## 核心原则

- **先识别再下手**：先确认是 .NET 托管程序（PE 头 CLR + `#~` / `#Strings` 流 + mscoree `_CorExeMain`），再决定走 dnSpy 而非 IDA
- **IL 优先于 C#**：dnSpyEx 的 C# 反编译器会丢失/扭曲信息（编译器生成的状态机、async/await、yield），关键判断与 patch 必须切到 **IL 编辑器**，C# 视图只用于快速浏览
- **de4dot 先行**：遇到混淆器先 `de4dot` 脱一轮再做静态分析，否则字符串/控制流全是乱的
- **MCP 联动**：环境里若注册了 dnSpy MCP（`dnspy_*` 工具），优先走 MCP 面做 decompile / IL inspection，避免来回切 GUI
- **证据化输出**：脱混淆产物、提取的配置/C2/key、patch diff 都要落盘

## 工具链映射

| 能力 | 首选 | 备注 |
|------|------|------|
| 反编译 + 调试 + patch | **dnSpyEx** | 王牌，唯一带 IL 编辑器的 GUI；老 dnSpy 已停更，用 Ex 分支 |
| 轻量 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`。详见 `references/sharp-tools.md` 的安装矩阵。

## 六阶段工作流

### 1. Identify（识别 .NET）

确认目标是托管程序，别把 native PE 当 .NET 分析：

The rest: https://github.com/zhaoxuya520/reverse-skill/blob/HEAD/skills/dotnet-reverse/SKILL.md
