Ir al contenido

ILSpy - Descompilador de .NET

ILSpy - Descompilador de .NET

ILSpy es el navegador y descompilador de ensamblajes .NET de código abierto. Invierte el proceso de compilación, convirtiendo Microsoft Intermediate Language (MSIL/CIL) nuevamente en C# de alto nivel legible (y otros lenguajes). Es la herramienta gratuita estándar para inspeccionar, analizar e ingeniería inversa de binarios .NET — desde evaluación de malware hasta depuración de librerías de terceros sin fuente. Se ejecuta como una aplicación GUI de Windows, una aplicación Avalonia multiplataforma, una extensión de VS Code, y el CLI ilspycmd.

Instalación

VarianteCómo
GUI de WindowsDescarga el instalador/zip de GitHub Releases
GUI multiplataformaCompilación AvaloniaILSpy (Linux/macOS)
CLI (ilspycmd)dotnet tool install --global ilspycmd
VS CodeInstala la extensión “ILSpy .NET Decompiler”
Verificar CLIilspycmd --version

Conceptos Esenciales de la GUI

AcciónCómo
Abrir ensamblajeArchivo → Abrir, o arrastra un .dll/.exe
Cargar dependenciasILSpy resuelve ensamblajes referenciados automáticamente
NavegarExpande el árbol: ensamblaje → espacio de nombres → tipo → miembro
Descompilar un miembroHaz clic en él; C# aparece en el panel principal
Analizar usosClic derecho → Analizar (¿quién llama/usa esto?)
BuscarCtrl+F / cuadro de búsqueda para tipos y miembros
Cambiar versión de lenguajeMenú desplegable de barra de herramientas (C# 1.0 … última)
Guardar proyecto descompiladoArchivo → Guardar Código (exporta .csproj completo)

Analizar (Referencias Cruzadas)

Clic derecho → Mostrar analiza
Instanciado Por
Utilizado Por
Asignado Por / Leído Por (campos)
Anulado Por / Anula
Expuesto Por

Este es el flujo de trabajo central de IE: elige un método sospechoso y rastrea quién lo llama y qué toca.

ilspycmd (Línea de Comandos)

ComandoDescripción
ilspycmd Assembly.dllDescompila el ensamblaje completo a stdout
ilspycmd -o out/ Assembly.dllDescompila a un directorio
ilspycmd -p -o proj/ Assembly.dllExporta un proyecto .csproj compilable
ilspycmd -t Namespace.Type Assembly.dllDescompila un solo tipo
ilspycmd -il Assembly.dllMuestra IL crudo en lugar de C#
ilspycmd -lv CSharp10_0 Assembly.dllEstablece la versión de lenguaje C#
ilspycmd --nested-directories -p -o out/ A.dllRefleja espacios de nombres como carpetas
ilspycmd -r LIBDIR Assembly.dllAñade una ruta de búsqueda de referencia de ensamblaje

Inspeccionar Metadatos y Recursos

ObjetivoCómo
Recursos incrustadosÁrbol → nodo Recursos; extrae vía Guardar
Tablas de metadatosVer → “Metadata” (tablas crudo, tokens)
Strings/ILCambia el menú desplegable de lenguaje a IL
PInvoke/nativoVisible en firmas de método

Flujos de Trabajo Comunes

# Evaluación de una muestra sospechosa: volcado completo de fuente para grep
ilspycmd -o sample_src/ suspicious.dll
grep -rin "DownloadString\|FromBase64String\|Process.Start" sample_src/

# Recupera un proyecto compilable de un DLL del que perdiste la fuente
ilspycmd -p -o recovered/ MyLib.dll

# Mira IL crudo cuando la descompilación de C# está ofuscada
ilspycmd -il obfuscated.dll | less

Para ensamblajes muy ofuscados, empareja ILSpy con un desobfuscador (ej. de4dot) primero, luego descompila el binario limpio.

ILSpy vs Otras Herramientas .NET

HerramientaTipoNotas
ILSpyDescompilador + navegadorCódigo abierto, CLI + GUI
dnSpy / dnSpyExDescompilador + depuradorEdita y depura ensamblajes
dotPeekDescompiladorGratuito (JetBrains), Windows
ILDASMDesensam bladorSolo IL, incluido con .NET SDK

Recursos