Zum Inhalt springen

ILSpy - .NET Decompiler Spickzettel

ILSpy - .NET Decompiler Spickzettel

ILSpy ist der Open-Source .NET Assembly Browser und Decompiler. Es kehrt den Compilierungs-Prozess um und wandelt Microsoft Intermediate Language (MSIL/CIL) zurück in lesbares, hochstufiges C# (und andere Sprachen). Es ist das Standard-Gratis-Tool zum Inspizieren, Analysieren und Reverse-Engineering von .NET-Binaries — von Malware-Triage bis zum Debuggen von Drittanbieter-Bibliotheken ohne Quelle. Es läuft als Windows GUI, plattformübergreifende Avalonia-App, VS Code Extension und das ilspycmd CLI.

Installation

VarianteWie
Windows GUIInstaller/Zip von GitHub Releases herunterladen
Plattformübergreifende GUIAvaloniaILSpy Build (Linux/macOS)
CLI (ilspycmd)dotnet tool install --global ilspycmd
VS Code”ILSpy .NET Decompiler” Extension installieren
CLI überprüfenilspycmd --version

GUI Grundlagen

AktionWie
Assembly öffnenDatei → Öffnen, oder .dll/.exe in das Fenster ziehen
Abhängigkeiten ladenILSpy löst referenzierte Assemblies automatisch auf
NavigierenBaum erweitern: Assembly → Namespace → Type → Member
Einen Member decompilierenKlicken; C# erscheint im Hauptbereich
Nutzungen analysierenRechtsklick → Analyze (wer ruft/nutzt das?)
SuchenCtrl+F / Suchfeld für Types und Members
C# Version ändernToolbar Dropdown (C# 1.0 … neueste)
Decompiliertes Projekt speichernDatei → Code speichern (vollständiges .csproj exportieren)

Analysieren (Cross-References)

Rechtsklick → Analyze zeigt
Instantiated By
Used By
Assigned By / Read By (Felder)
Overridden By / Overrides
Exposed By

Dies ist der Kern RE Workflow: wähle eine verdächtige Methode und tracke wer sie aufruft und was sie berührt.

ilspycmd (Befehlszeile)

BefehlBeschreibung
ilspycmd Assembly.dllGanze Assembly decompilieren zu stdout
ilspycmd -o out/ Assembly.dllZu einem Verzeichnis decompilieren
ilspycmd -p -o proj/ Assembly.dllCompilierbar .csproj Projekt exportieren
ilspycmd -t Namespace.Type Assembly.dllEinen einzelnen Type decompilieren
ilspycmd -il Assembly.dllRohes IL anstelle von C# zeigen
ilspycmd -lv CSharp10_0 Assembly.dllC# Sprach-Version setzen
ilspycmd --nested-directories -p -o out/ A.dllNamespaces als Ordner spiegeln
ilspycmd -r LIBDIR Assembly.dllAssembly-Referenz-Suchpfad hinzufügen

Metadaten & Ressourcen inspizieren

ZielWie
Eingebettete RessourcenBaum → Resources Node; via Save extrahieren
Metadaten-TabellenAnsicht → “Metadata” (Rohle Tabellen, Tokens)
Strings/ILSprachen-Dropdown auf IL wechseln
PInvoke/NativeIn Methoden-Signaturen sichtbar

Häufige Workflows

# Verdächtige .NET Sample triage: Vollständiger Source-Dump zum Greppen
ilspycmd -o sample_src/ suspicious.dll
grep -rin "DownloadString\|FromBase64String\|Process.Start" sample_src/

# Ein compilierbar Projekt von einer DLL wiederherstellen die du verloren hast
ilspycmd -p -o recovered/ MyLib.dll

# Rohes IL ansehen wenn die C# Decompilation obfuskiert ist
ilspycmd -il obfuscated.dll | less

Für stark obfuskierte Assemblies, Deobfuscator (z.B. de4dot) zuerst koppeln, dann die bereinigte Binary decompilieren.

ILSpy vs Andere .NET Tools

ToolTypNotizen
ILSpyDecompiler + BrowserGratis, Open-Source, CLI + GUI
dnSpy / dnSpyExDecompiler + DebuggerAssemblies editieren & debuggen
dotPeekDecompilerGratis (JetBrains), Windows
ILDASMDisassemblerNur IL, mit .NET SDK versandt

Ressourcen