Pular para o conteúdo

ILSpy - Descompilador .NET

ILSpy - Descompilador .NET

ILSpy é o navegador de assembly .NET e descompilador de código aberto. Ele reverte o processo de compilação, convertendo Microsoft Intermediate Language (MSIL/CIL) de volta para C# legível e de alto nível (e outras linguagens). É a ferramenta padrão e gratuita para inspecionar, analisar e fazer engenharia reversa de binários .NET — desde triagem de malware até depuração de bibliotecas de terceiros sem fonte. Roda como uma GUI do Windows, um aplicativo Avalonia multiplataforma, uma extensão do VS Code e a CLI ilspycmd.

Instalação

VarianteComo
GUI do WindowsBaixe o instalador/zip do GitHub Releases
GUI multiplataformaBuild AvaloniaILSpy (Linux/macOS)
CLI (ilspycmd)dotnet tool install --global ilspycmd
VS CodeInstale a extensão “ILSpy .NET Decompiler”
Verificar CLIilspycmd --version

Essenciais da GUI

AçãoComo
Abrir assemblyFile → Open, ou arraste um .dll/.exe
Carregar dependênciasILSpy resolve automaticamente assemblies referenciados
NavegarExpanda a árvore: assembly → namespace → type → member
Descompilar um memberClique nele; C# aparece no painel principal
Analisar usosClique direito → Analyze (quem chama/usa isto?)
PesquisarCtrl+F / caixa de pesquisa para tipos e members
Alterar versão de linguagemDropdown da barra de ferramentas (C# 1.0 … mais recente)
Salvar projeto descompiladoFile → Save Code (exporte .csproj completo)

Analisar (Referências Cruzadas)

Clique direito → Analyze mostra
Instantiated By
Used By
Assigned By / Read By (campos)
Overridden By / Overrides
Exposed By

Este é o fluxo de trabalho de RE principal: escolha um método suspeito e rastreie quem o chama e o que ele toca.

ilspycmd (Linha de Comando)

ComandoDescrição
ilspycmd Assembly.dllDescompile o assembly inteiro para stdout
ilspycmd -o out/ Assembly.dllDescompile para um diretório
ilspycmd -p -o proj/ Assembly.dllExporte um projeto .csproj compilável
ilspycmd -t Namespace.Type Assembly.dllDescompile um único tipo
ilspycmd -il Assembly.dllMostre IL bruto em vez de C#
ilspycmd -lv CSharp10_0 Assembly.dllDefina a versão da linguagem C#
ilspycmd --nested-directories -p -o out/ A.dllEspelhe namespaces como pastas
ilspycmd -r LIBDIR Assembly.dllAdicione um caminho de pesquisa de referência assembly

Inspecionando Metadados e Recursos

AlvoComo
Recursos incorporadosÁrvore → nó Resources; extraia via Save
Tabelas de metadadosView → “Metadata” (tabelas brutas, tokens)
Strings/ILAlterne o dropdown de linguagem para IL
PInvoke/nativoVisível em assinaturas de método

Fluxos de Trabalho Comuns

# Triagem de uma amostra suspeita .NET: despejo de source completo para grep
ilspycmd -o sample_src/ suspicious.dll
grep -rin "DownloadString\|FromBase64String\|Process.Start" sample_src/

# Recupere um projeto compilável de uma DLL da qual você perdeu a source
ilspycmd -p -o recovered/ MyLib.dll

# Olhe para IL bruto quando a descompilação C# está ofuscada
ilspycmd -il obfuscated.dll | less

Para assemblies fortemente ofuscadas, emparelhe ILSpy com um desofuscador (por exemplo de4dot) primeiro, depois descompile o binário limpo.

ILSpy vs Outras Ferramentas .NET

FerramentaTipoNotas
ILSpyDescompilador + navegadorGratuito, código aberto, CLI + GUI
dnSpy / dnSpyExDescompilador + debuggerEdite e depure assemblies
dotPeekDescompiladorGratuito (JetBrains), Windows
ILDASMDesassembladorApenas IL, vem com .NET SDK

Recursos