Pular para o conteúdo
Skillpedia
Código em geral42 mil · #4762

dotnet-reverse

Faz seu agente analisar e entender programas feitos em .NET e C#. É útil para investigar ferramentas de segurança ou programas que foram modificados. Ajuda a ver como o código funciona por dentro.

O que ela faz

Esta ferramenta ajuda a analisar programas feitos em .NET ou C#. Ela é útil para entender como esses programas funcionam por dentro, especialmente se eles foram modificados para serem mais difíceis de entender (ofuscados) ou se são ferramentas usadas em segurança.

Quando usar

  • ✓Quando você tem um programa .NET ou C# e quer ver o código.
  • ✓Se um programa .NET parece ter sido 'embaralhado' para esconder seu funcionamento.
  • ✓Para analisar ferramentas de segurança que usam .NET.

Exemplo do que pedir para a IA

“Analise este programa C# e me diga como ele se conecta à internet.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/dotnet-reverse/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/dotnet-reverse/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela usa ferramentas especializadas para primeiro verificar se o programa é realmente .NET. Se estiver ofuscado, ela tenta 'desofuscar' o código. Depois, permite ver o código em uma linguagem intermediária (IL) ou em C#, e até fazer pequenas modificações.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add zhaoxuya520/reverse-skill --skill dotnet-reverse

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/main/skills/dotnet-reverse/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Manual de Tarefas de Engenharia Reversa .NET / C#

AÇÃO NECESSÁRIA (Leia e execute imediatamente)

  1. NOW: Use DIE/file/Cabeçalhos CLR para confirmar que o alvo é .NET gerenciado (caso contrário, mude para ida-reverse/ / reverse-engineering/)
  2. NOW: Se houver suspeita de ofuscação → primeiro de4dot para desofuscar, produza *-clean.exe e guarde a amostra original
  3. NEXT: dnSpyEx (ou dnSpy MCP / ilspycmd) estático: Navegação em C# + Visualização IL para pontos de decisão chave
  4. ACT: Depuração dinâmica para texto claro/C2 necessário; para modificar lógica, patch IL tem prioridade sobre recompilação em C#
  5. Ao final da fase, forneça ao usuário 3-6 opções para o próximo passo (incluindo exportação de relatório)

Escopo de Aplicação

Use esta habilidade prioritariamente quando a tarefa se enquadrar nos seguintes cenários:

  • Identificar e fazer engenharia reversa de artefatos de compilação .NET / C# (PE gerenciado / .exe / .dll)
  • Analisar toolchains Sharp* de equipes vermelhas (Rubeus, SharpHound, SharpShell, etc.)
  • Desofuscar/descompactar ConfuserEx / SmartAssembly / Babel / Eazfuscator / .NET Reactor, etc.
  • Fazer engenharia reversa da lógica de descriptografia e C2 de loaders .NET / info-stealers / RATs
  • Aplicar patches em programas C# (modificar decisões, constantes, keygens)
  • Analisar a camada gerenciada Mono/Unity antes do IL2CPP (Nota: após a compilação IL2CPP, torna-se nativo, siga reverse-engineering/ + seed-014)

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

Princípios Fundamentais

  • Identifique primeiro, depois aja: Confirme primeiro se é um programa .NET gerenciado (cabeçalho PE CLR + fluxo #~ / #Strings + fluxo mscoree _CorExeMain) antes de decidir usar dnSpy em vez de IDA.
  • IL tem prioridade sobre C#: O descompilador C# do dnSpyEx pode perder/distorcer informações (máquinas de estado geradas pelo compilador, async/await, yield). Decisões chave e patches devem ser feitos no editor IL. A visualização em C# serve apenas para navegação rápida.
  • de4dot primeiro: Ao encontrar um ofuscador, use de4dot para desofuscar primeiro antes de fazer a análise estática, caso contrário, strings/fluxo de controle estarão bagunçados.
  • Interoperabilidade MCP: Se o dnSpy MCP (ferramenta dnspy_*) estiver registrado no ambiente, use a interface MCP para descompilação/inspeção IL prioritariamente, evitando alternar entre GUIs.
  • Saída como evidência: Produtos de desofuscação, configurações/C2/chaves extraídas, diffs de patch devem ser salvos em disco.

Mapeamento da Cadeia de Ferramentas

Capacidade Preferencial Observações
Descompilação + Depuração + Patch dnSpyEx Ferramenta principal, única com editor IL GUI; o dnSpy antigo está descontinuado, use o fork Ex.
Descompilação CLI leve / headless ILSpy (ilspycmd) Adequado para processamento em lote, scripts, Linux/macOS.
Desofuscação de4dot Solução padrão para os principais ofuscadores como ConfuserEx, SmartAssembly, etc.
Identificação de Ofuscador Detect It Easy (DIE) / file Determine o tipo de ofuscador primeiro para definir os parâmetros do de4dot.
Manipulação programática de IL dnlib Escreva scripts C# para modificar metadados em lote / desofuscadores de strings.
Manipulação direta por IA dnSpy MCP Interfaces de ferramentas como dnspy_decompile / dnspy_inspect_il.

Pré-requisitos: Instale dnSpyEx + de4dot no host Windows (via choco ou release); use ilspycmd + dotnet runtime no Linux/macOS. Veja a matriz de instalação em references/sharp-tools.md para detalhes.

Fluxo de Trabalho de Seis Fases

1. Identificar (.NET)

Confirme que o alvo é um programa gerenciado e não analise um PE nativo como .NET:

# Windows
file target.exe                       # "PE32 executable ... for MS Windows" 不够
# 关键:看有没有 CLR
powershell -c "[System.Reflection.AssemblyName]::GetAssemblyName('target.exe')"
# 或
dnSpyEx 直接拖进去 —— 能打开就是托管

# 通用
strings target.exe | grep -iE "mscoree|_CorExeMain|mscorlib|System\\."

Indicadores de Identificação .NET:

  • Cabeçalho PE Data Directory[14] (Cabeçalho de Tempo de Execução CLR) diferente de zero
  • Importação mscoree.dll / Ponto de 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 com string System.Private.CoreLib e metadados de tipo reconstruídos — para estes, use reverse-engineering/ (IDA/r2). Esta habilidade apenas fornece um aviso de identificação.

2. Detectar (Ofuscador)

# DIE 快速识别
diec target.exe                        # Detect It Easy CLI
# 或拖进 dnSpyEx,看是否大量乱码类名 / 控制流变形

Ofuscadores comuns → Estratégias de desofuscação (veja references/obfuscators.md para detalhes):

Ofuscador Característica Tratamento com de4dot
ConfuserEx (1.0.0 / 2.x) <module> anti-tamper, deformação de fluxo de controle, criptografia de strings de4dot target.exe geralmente reconhece automaticamente
SmartAssembly circular/string encoding, compressão de recursos de4dot target.exe
Babel.NET Criptografia de corpo de método, fluxo de controle de4dot target.exe
Eazfuscator.NET Criptografia de strings/recursos de4dot, algumas versões podem exigir intervenção manual
.NET Reactor anti-tamper + necrobit de4dot, versões mais recentes podem falhar e exigir intervenção manual

3. Desofuscar

# de4dot 默认自动识别大多数壳
de4dot target.exe -o target-clean.exe

# 指定类型(自动识别失败时)
de4dot --type cfze target.exe          # ConfuserEx
de4dot --type sa target.exe            # SmartAssembly

# 多层混淆 / de4dot 报 unknown
de4dot --detect target.exe             # 看它识别成什么
# 可能要先 patch anti-tamper 再 de4dot(见 references/obfuscators.md)

Saída: target-clean.exe, use-o para análises posteriores. Guarde a amostra original para comparação.

4. Analisar Estaticamente

Carregue a amostra desofuscada no dnSpyEx:

  • Visualização C#: Navegue rapidamente pela estrutura de classes, assinaturas de métodos, strings (para localização).
  • Visualização IL: Pontos de decisão chave, lógica de criptografia, máquinas de estado devem ser visualizados em IL (clique com o botão direito → Editar IL ou Visualização IL).
  • Encontre o ponto de entrada: Main / Startup / inicializador de módulo (Module .cctor).
  • Encontre a lógica chave: Procure por flag, password, verify, check, encrypt, http, Config.
定位字符串 → 反向引用 → 找到使用它的方法 → IL 视图看判断逻辑

5. Dinamicamente (Depuração)

Depurador do dnSpyEx: Anexe ao processo / Inicie a depuração, defina pontos de interrupção em métodos chave e observe em tempo de execução:

  • Strings em texto claro após a descriptografia (muitos ofuscadores descriptografam strings em tempo de execução).
  • Endereços C2, resultados de descriptografia de configuração.
  • Fluxo de controle acionado por exceção (anti-debug frequentemente usa try/catch para ocultar o caminho real).

A depuração dinâmica .NET é muito mais amigável do que a nativa — você pode ver diretamente os valores dos objetos e o conteúdo das strings. Priorize a depuração dinâmica em vez de se debater com a análise estática.

6. Patch (Modificar Conforme Necessário)

dnSpyEx → 右键方法 → Edit Method (C#) 或 Edit IL
  - 改判断:ldc.i4.0 → ldc.i4.1(false→true)
  - 改常量:直接编辑字符串/数字
  - 删除校验:nop 掉整段
File → Save Module → 替换原文件

Confiabilidade do patch IL > patch C#: A recompilação em C# pode falhar (falta de referências, sintaxe incorreta), enquanto a edição IL raramente distorce informações. Veja references/common-workflow.md para detalhes.

Roteamento de Cenário de Gatilho

Entre nesta habilidade quando o usuário disser:

  • "Engenharia reversa de binários .NET / C#" / "Descompilação de programa C#"
  • "Análise com dnSpy" / "Patch com dnSpyEx"
  • "Desofuscação / Descompactação de ConfuserEx / SmartAssembly / Babel"

...

Perguntas frequentes

O que é 'ofuscação'?

É como embaralhar o código de um programa para torná-lo muito difícil para as pessoas entenderem, mesmo que o programa continue funcionando normalmente.

Qual a diferença entre C# e IL?

C# é a linguagem que os programadores escrevem. IL (Intermediate Language) é uma linguagem mais básica que o computador entende melhor antes de rodar o programa. Para análise profunda, ver o IL é mais confiável.

Posso usar isso para qualquer programa?

Não, esta ferramenta é específica para programas feitos com .NET ou C#. Programas feitos em outras linguagens (como C++ ou Go) precisam de outras ferramentas.

Detalhes

Descrição original do autor

.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)。

repo: zhaoxuya520/reverse-skill

Popularidade

Estrelas no GitHub
42 mil
Posição no ranking
#4762
Licença
MIT
Atualizada em
22/09/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas