Salta ai contenuti

ILSpy - Cheatsheet Decompilatore .NET

ILSpy - Cheatsheet Decompilatore .NET

ILSpy è il browser e decompilatore di assembly .NET open-source. Inverte il processo di compilazione, convertendo Microsoft Intermediate Language (MSIL/CIL) in C# leggibile e di alto livello (e altri linguaggi). È lo strumento gratuito standard per ispezionare, analizzare e fare reverse engineering di binari .NET — dal triage del malware al debug di librerie di terze parti senza sorgente. Funziona come GUI Windows, app cross-platform Avalonia, estensione VS Code e CLI ilspycmd.

Installazione

VarianteCome
GUI WindowsScarica l”installer/zip da GitHub Releases
GUI Cross-platformBuild AvaloniaILSpy (Linux/macOS)
CLI (ilspycmd)dotnet tool install --global ilspycmd
VS CodeInstalla l”estensione “ILSpy .NET Decompiler”
Verifica CLIilspycmd --version

Essenziali GUI

AzioneCome
Apri assemblyFile → Open, o trascina .dll/.exe
Carica dipendenzeILSpy risolve gli assembly referenziati automaticamente
NavigaEspandi l”albero: assembly → namespace → type → member
Decompila un memberClicca; C# appare nel riquadro principale
Analizza utilizziRight-click → Analyze (chi chiama/usa questo?)
RicercaCtrl+F / search box per tipi e member
Cambia versione linguaggioDropdown della toolbar (C# 1.0 … latest)
Salva progetto decompilatoFile → Save Code (esporta .csproj completo)

Analyze (Cross-References)

Right-click → Analyze mostra
Instantiated By
Used By
Assigned By / Read By (fields)
Overridden By / Overrides
Exposed By

Questo è il flusso di lavoro RE principale: scegli un metodo sospetto e traccia chi lo chiama e cosa tocca.

ilspycmd (Command Line)

ComandoDescrizione
ilspycmd Assembly.dllDecompila l”intero assembly a stdout
ilspycmd -o out/ Assembly.dllDecompila a una directory
ilspycmd -p -o proj/ Assembly.dllEsporta un progetto .csproj compilabile
ilspycmd -t Namespace.Type Assembly.dllDecompila un singolo type
ilspycmd -il Assembly.dllMostra IL grezzo invece di C#
ilspycmd -lv CSharp10_0 Assembly.dllImposta la versione del linguaggio C#
ilspycmd --nested-directories -p -o out/ A.dllRispecchia i namespace come cartelle
ilspycmd -r LIBDIR Assembly.dllAggiungi un percorso di ricerca reference assembly

Ispezione Metadati & Risorse

TargetCome
Risorse incorporateNodo Risorse dell”albero; estrai via Save
Tabelle metadatiView → “Metadata” (tabelle grezze, token)
Stringhe/ILCambia il dropdown del linguaggio a IL
PInvoke/nativeVisibile nelle firme dei metodi

Flussi di Lavoro Comuni

# Triage di un campione sospetto .NET: dump sorgente completo per grepping
ilspycmd -o sample_src/ suspicious.dll
grep -rin "DownloadString\|FromBase64String\|Process.Start" sample_src/

# Recupera un progetto compilabile da una DLL di cui hai perso il sorgente
ilspycmd -p -o recovered/ MyLib.dll

# Guarda IL grezzo quando la decompilazione C# è offuscata
ilspycmd -il obfuscated.dll | less

Per gli assembly fortemente offuscati, abbina ILSpy con un deobfuscator (es de4dot) prima, poi decompila il binario ripulito.

ILSpy vs Altri Tool .NET

ToolTipoNote
ILSpyDecompilatore + browserFree, open-source, CLI + GUI
dnSpy / dnSpyExDecompilatore + debuggerModifica & debug assembly
dotPeekDecompilatoreFree (JetBrains), Windows
ILDASMDisassemblerIL only, fornito con .NET SDK

Risorse