.NET Assembly-Dekompilation mit ILSpy
Nutzen Sie diese Fähigkeit, um zu verstehen, wie .NET-Code intern funktioniert, indem Sie kompilierte Assemblies dekompilieren.
Voraussetzungen
- .NET SDK installiert
- ILSpy-Befehlszeilentool verfügbar über einen der folgenden Wege:
dnx ilspycmd(falls in Ihrem SDK oder Runtime verfügbar)dotnet tool install --global ilspycmd
Beide Formen werden unten gezeigt. Verwenden Sie die, die in Ihrer Umgebung funktioniert.
Hinweis: Die ILSpyCmd-Optionen können je nach Version leicht variieren. Überprüfen Sie immer die unterstützten Flags mit
ilspycmd -h.
Schnellstart
# Eine Assembly auf stdout dekompilieren
ilspycmd MyLibrary.dll
# oder
dnx ilspycmd MyLibrary.dll
# In einen Ausgabeordner dekompilieren
ilspycmd -o output-folder MyLibrary.dll
Häufige .NET Assembly-Pfade
NuGet-Pakete
~/.nuget/packages/<paketname>/<version>/lib/<tfm>/
.NET Runtime-Bibliotheken
dotnet --list-runtimes
.NET SDK-Referenzassemblies
dotnet --list-sdks
Referenzassemblies enthalten keine Implementierungen.
Projekt-Build-Ausgabe
./bin/Debug/net8.0/<AssemblyName>.dll
./bin/Release/net8.0/publish/<AssemblyName>.dll
Kernarbeitsablauf
- Identifizieren, was Sie verstehen möchten
- Die Assembly lokalisieren
- Typen auflisten
- Das Ziel dekompilieren
Befehle
Grundlegende Dekompilation
ilspycmd MyLibrary.dll
ilspycmd -o ./dekompiliert MyLibrary.dll
ilspycmd -p -o ./projekt MyLibrary.dll
Gezielte Dekompilation
ilspycmd -t Namespace.ClassName MyLibrary.dll
ilspycmd -lv CSharp12_0 MyLibrary.dll
IL-Code anzeigen
ilspycmd -il MyLibrary.dll
Hinweise zu modernen .NET-Builds
- ReadyToRun-Images können die Lesbarkeit beeinträchtigen
- Getrimmte oder AOT-Builds können Code auslassen
- Nicht getrimmte Builds bevorzugen
Rechtlicher Hinweis
Das Dekompilieren von Assemblies kann Lizenzbeschränkungen unterliegen.