Communitygithub.com

dotnet-reverse

Especialista em engenharia reversa de binários .NET / C#. Use para assemblies .NET, ferramentas Sharp*, ofuscadores (ConfuserEx, SmartAssembly, Babel, Eazfuscator), loaders, info-stealers e malwares .NET. Prioriza dnSpyEx + de4dot e, quando necessário, integra com dnSpy MCP. Não usar para binários nativos.

O que é dotnet-reverse?

Este skill é projetado para engenharia reversa de binários .NET / C# (gerenciados), incluindo assemblies PE com cabeçalho CLR, executáveis e DLLs gerenciados, ferramentas da família Sharp* (Rubeus, SharpHound, SharpShell, etc.), programas ofuscados com ferramentas como ConfuserEx, SmartAssembly, Babel, Eazfuscator e .NET Reactor, além de loaders, info-stealers e malwares .NET. Ele também cobre análise de camada gerenciada Mono/Unity antes da compilação IL2CPP. A abordagem principal é: (1) confirmar que o alvo é .NET gerenciado (via DIE, `file` ou cabeçalho CLR); (2) se ofuscado, aplicar `de4dot` para desofuscação; (3) usar dnSpyEx (ou dnSpy MCP / `ilspycmd`) para análise estática, dando preferência à visualização IL para lógica de decisão e patches; (4) depuração dinâmica para descriptografia em tempo de execução; (5) patch no nível IL (mais confiável que C#). O skill define um workflow de seis estágios (Identificar, Detectar, Desofuscar, Analisar Estaticamente, Depurar Dinamicamente, Patch) e fornece regras claras de roteamento: se o binário for nativo (C/C++/Go/Rust, IL2CPP, NativeAOT) o skill orienta a saída para `/reverse-engineering/` ou `/ida-reverse/`. Ele também suporta integração com dnSpy MCP para operações diretas por IA e enfatiza a saída de artefatos (amostras limpas, configurações extraídas, diffs de patch).

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/dotnet-reverse

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Normas de Trabalho para Engenharia Reversa .NET / C#

AÇÃO REQUERIDA (Execute Imediatamente Após Ler)

  1. AGORA: Use DIE/file/cabeçalho CLR para confirmar que o alvo é .NET gerenciado (caso contrário, MUDAR para ida-reverse/ / reverse-engineering/)
  2. AGORA: Se houver suspeita de ofuscação → primeiro aplique de4dot para desofuscar, gere *-clean.exe e mantenha a amostra original
  3. PRÓXIMO: dnSpyEx (ou dnSpy MCP / ilspycmd) para análise estática: navegação C# + visualização IL para lógica crítica
  4. AÇÃO: Quando precisar de texto limpo/C2, use depuração dinâmica; quando precisar alterar lógica, priorize patch IL em vez de recompilação C#
  5. Ao final da fase, forneça ao usuário um menu de 3–6 próximos passos (incluindo exportação de relatório)

Escopo de Aplicação

Priorize este skill quando a tarefa se enquadrar nos seguintes cenários:

  • Identificar e reverter engenharia de produtos compilados .NET / C# (PE gerenciado / .exe / .dll)
  • Analisar a cadeia de ferramentas Sharp* da equipe vermelha (Rubeus, SharpHound, SharpShell, etc.)
  • Desofuscar shells como ConfuserEx / SmartAssembly / Babel / Eazfuscator / .NET Reactor
  • Reverter a lógica de descriptografia e C2 de loaders .NET / info-stealers / RATs
  • Aplicar patches em programas C# (alterar decisões, constantes, keygen)
  • Analisar a camada gerenciada Mono/Unity antes da compilação IL2CPP (nota: IL2CPP compila para nativo, use reverse-engineering/ + seed-014)

Se o alvo for um binário puramente nativo (C/C++/Go/Rust, sem CLR), use reverse-engineering/, ida-reverse/ ou radare2/.

Princípios Centrais

  • Identifique antes de agir: Confirme se é um programa .NET gerenciado (cabeçalho CLR no PE + fluxos #~ / #Strings + _CorExeMain do mscoree) antes de decidir usar dnSpy em vez de IDA
  • IL antes de C#: O decompilador C# do dnSpyEx pode perder ou distorcer informações (máquinas de estado geradas pelo compilador, async/await, yield). Decisões críticas e patches devem ser feitos no Editor IL; a visualização C# serve apenas para navegação rápida
  • de4dot primeiro: Ao encontrar um ofuscador, execute de4dot para desofuscar antes de fazer análise estática; caso contrário, strings e fluxo de controle estarão todos embaralhados
  • Integração com MCP: Se o ambiente tiver dnSpy MCP registrado (ferramentas dnspy_*), priorize a interface MCP para decompile / inspeção IL, evitando alternar de GUI
  • Saída baseada em evidências: O produto da desofuscação, configuração/C2/key extraídos e diff de patch devem ser salvos em disco

Mapeamento de Ferramentas

CapacidadePreferidaObservações
Decompilação + depuração + patchdnSpyExA melhor, única GUI com editor IL; o dnSpy antigo está descontinuado, use o branch Ex
Decompilação leve CLI / headlessILSpy (ilspycmd)Ideal para lote, script, Linux/macOS
Desofuscaçãode4dotSolução padrão para ConfuserEx, SmartAssembly e outros shells populares
Identificação de ofuscadoresDetect It Easy (DIE) / filePrimeiro identifique o tipo de shell para decidir os parâmetros do de4dot
Manipulação programática de ILdnlibEscreva scripts C# para modificar metadados em lote ou descriptografar strings
Operação direta por IAdnSpy MCPFerramentas como dnspy_decompile / dnspy_inspect_il

Pré-requisito: Windows com dnSpyEx + de4dot instalados (choco ou release); Linux/macOS com ilspycmd + dotnet runtime. Consulte references/sharp-tools.md para a matriz de instalação.

Fluxo de Trabalho em Seis Etapas

1. Identificar (.NET)

Confirme se o alvo é um programa gerenciado; não analise um PE nativo como se fosse .NET:

# Windows
file target.exe                       # "PE32 executable ... for MS Windows" não é suficiente
# Chave: verificar se há CLR
powershell -c "[System.Reflection.AssemblyName]::GetAssemblyName('target.exe')"
# Ou
Arraste para o dnSpyEx — se abrir, é gerenciado

# Genérico
strings target.exe | grep -iE "mscoree|_CorExeMain|mscorlib|System\\."

Marcadores de identificação .NET:

  • PE header Data Directory[14] (CLR Runtime Header) diferente de zero
  • Importação de mscoree.dll / entrada _CorExeMain
  • Fluxos de metadados #~, #Strings, #US, #GUID, #Blob
  • Strings mscorlib / System.Private.CoreLib

Exceção NativeAOT: Compilado para nativo, sem cabeçalho CLR, mas contém strings System.Private.CoreLib e metadados de tipo reestruturados — estes devem usar reverse-engineering/ (IDA/r2); este skill apenas fornece dicas de identificação.

2. Detectar (ofuscador)

# Identificação rápida com DIE
diec target.exe                        # Detect It Easy CLI
# Ou arraste para o dnSpyEx e veja se há muitos nomes de classe ilegíveis / fluxo de controle deformado

Ofuscadores comuns → Estratégia de desofuscação (consulte references/obfuscators.md):

OfuscadorCaracterísticasProcessamento com de4dot
ConfuserEx (1.0.0 / 2.x)<module> anti-tamper, fluxo de controle deformado, criptografia de stringsde4dot target.exe geralmente identifica automaticamente
SmartAssemblyCodificação circular/string, compressão de recursosde4dot target.exe
Babel.NETCriptografia de corpo de método, fluxo de controlede4dot target.exe
Eazfuscator.NETCriptografia de strings/recursosde4dot, algumas versões podem exigir intervenção manual
.NET Reactoranti-tamper + necrobitde4dot, versões mais novas podem falhar e exigir trabalho manual

3. Desofuscar

# de4dot identifica automaticamente a maioria dos shells
de4dot target.exe -o target-clean.exe

# Especificar tipo (quando a identificação automática falhar)
de4dot --type cfze target.exe          # ConfuserEx
de4dot --type sa target.exe            # SmartAssembly

# Ofuscação em múltiplas camadas / de4dot reporta "unknown"
de4dot --detect target.exe             # Veja o que ele identifica
# Pode ser necessário aplicar patch anti-tamper antes do de4dot (consulte references/obfuscators.md)

Produto: target-clean.exe, use-o para análise posterior. Mantenha a amostra original para comparação.

4. Análise Estática

Carregue a amostra desofuscada no dnSpyEx:

  • Visualização C#: Navegação rápida pela estrutura de classes, assinaturas de métodos, strings (para localização)
  • Visualização IL: Decisões críticas, lógica de criptografia, máquinas de estado devem ser vistas em IL (clique direito → Edit IL ou visualização IL)
  • Encontre a entrada: Main / Startup / Inicializador de módulo (Module .cctor)
  • Encontre a lógica crítica: pesquise por flag, password, verify, check, encrypt, http, Config
Localizar string → referência reversa → encontrar o método que a usa → visualização IL para ver a lógica de decisão

5. Depuração Dinâmica

Depurador do dnSpyEx: anexar a processo / iniciar depuração, definir breakpoints em métodos críticos, observar em tempo de execução:

  • Strings descriptografadas (muitos ofuscadores só descriptografam strings em tempo de execução)
  • Endereços C2, resultados de descriptografia de configuração
  • Fluxo de controle orientado a exceções (anti-debug costuma usar try/catch para esconder o caminho real)

A depuração dinâmica .NET é muito mais amigável que a nativa — é possível ver diretamente valores de objetos e conteúdo de strings. Prefira depuração dinâmica em vez de análise estática exaustiva.

6. Patch (conforme necessário)

dnSpyEx → clique direito no método → Edit Method (C#) ou Edit IL
  - Alterar decisão: ldc.i4.0 → ldc.i4.1 (false→true)
  - Alterar constante: editar string/número diretamente
  - Remover verificação: nop em todo o bloco
File → Save Module → Substituir o arquivo original

Confiabilidade do patch IL > patch C#: A recompilação C# pode falhar (referências ausentes, sintaxe incorreta), enquanto a edição IL raramente causa distorção. Consulte references/common-workflow.md para detalhes.

Roteamento de Cenários de Acionamento

Este skill é ativado quando o usuário menciona:

  • "Engenharia reversa de binários .NET / C#" / "Decompilação de programa C#"
  • "Análise com dnSpy" / "Patch com dnSpyEx"
  • "Desofuscação de ConfuserEx / SmartAssembly / Babel"
  • "Análise de ferramentas Sharp*" (Rubeus / SharpHound / SharpShell)
  • "Reversão de malware .NET / loader / info-stealer"
  • "Patch / keygen / alteração de decisão em programa C#"

Quando Sair

  • Jogos Unity compilados com IL2CPP → reverse-engineering/ + seed-014_unity-il2cpp-reverse.md (IL2CPP é nativo, não usa dnSpy)
  • Produtos NativeAOT → reverse-engineering/ (idem, nativo)
  • PE puramente nativo (sem CLR) → reverse-engineering/ / ida-reverse/
  • Necessidade de migração de símbolos/funções em lote para outra versão → binary-diff/
  • Necessidade de desenhar caminho de ataque / gráfico de cadeia de chamadas → diagram-generator/

Contexto de Roteamento

Entrada upstream: skills/SKILL.md (controlador central), routing.md Saídas downstream:

  • IL2CPP / NativeAOT (nativo) → reverse-engineering/
  • Análise profunda de segmentos nativos .so/.dll → ida-reverse/ / radare2/
  • Necessidade de operação direta por IA no dnSpy → registrar e integrar dnSpy MCP (consulte references/sharp-tools.md)

Módulos relacionados no mesmo nível:

  • reverse-engineering/languages-compiled.md (introdução ao .NET redireciona para este módulo)
  • apk-reverse/ (reversão Android Xamarin/MAUI pode retornar a este módulo para a camada C#)

Documentos de Referência

  • references/obfuscators.md — Detalhamento de desofuscação para ConfuserEx / SmartAssembly / Babel / Eazfuscator / .NET Reactor + bypass anti-tamper
  • references/common-workflow.md — Fluxo de trabalho completo, confiabilidade de patch IL, extração de descriptografia de strings, identificação de máquinas de estado
  • references/sharp-tools.md — Análise de ferramentas Sharp* da equipe vermelha, matriz de instalação, integração dnSpy MCP, índice de recursos da comunidade

Checklist de Conclusão de Tarefa

  • Confirmou a identidade CLR / gerenciado (ou já MUDOU para fora deste skill)?
  • Amostras ofuscadas foram desofuscadas com de4dot / equivalente antes de análise profunda?
  • A lógica crítica foi verificada com visualização IL (em vez de apenas pseudocódigo C#)?
  • Os artefatos (amostra limpa / configuração / diff de patch) foram salvos em disco e são reproduzíveis?
  • Forneceu um menu de próximos passos ou ponto de saída do relatório?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

diagram-generator

generate, refine, validate, and render diagrams from natural language, notes, code snippets, schemas, tables, or existing diagram source. use for flowcharts, swimlanes, sequence diagrams, state diagrams, er diagrams, class diagrams, architecture/c4-style diagrams, dependency graphs, gantt charts, mind maps, user journeys, sankey-style flows, org charts, network graphs, and other visual models. supports mermaid by default, graphviz dot for complex graph layout, plantuml for uml-heavy engineering diagrams, and svg output when direct markup is more reliable.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

go-rust-reverse

Use for reverse engineering stripped Go and Rust binaries including runtime recognition, pclntab/moduel data recovery, panic strings, and idiomatic decompilation recovery.

Habilidades Relacionadas