Aller au contenu

ILSpy - Décompilateur .NET

ILSpy - Décompilateur .NET

ILSpy est le navigateur d”assemblage .NET open-source et le décompilateur. Il inverse le processus de compilation, convertissant le Langage Intermédiaire Microsoft (MSIL/CIL) en C# de haut niveau lisible (et d”autres langues). C”est l”outil standard gratuit pour inspecter, analyser et réinvestir les binaires .NET — du triage des malwares au débogage des bibliothèques tierces sans source. Il s”exécute comme une application GUI Windows, une application Avalonia multi-plateforme, une extension VS Code, et le CLI ilspycmd.

Installation

VarianteComment
GUI WindowsTélécharger l”installateur/zip depuis GitHub Releases
GUI multi-plateformeCompilation AvaloniaILSpy (Linux/macOS)
CLI (ilspycmd)dotnet tool install --global ilspycmd
VS CodeInstaller l”extension « ILSpy .NET Decompiler »
Vérifier CLIilspycmd --version

Essentiels de la GUI

ActionComment
Ouvrir un assemblageFichier → Ouvrir, ou glisser un .dll/.exe
Charger les dépendancesILSpy résout automatiquement les assemblages référencés
NaviguerÉtendre l”arbre: assemblage → espace de noms → type → membre
Décompiler un membreCliquer dessus; le C# apparaît dans le volet principal
Analyser les utilisationsClic droit → Analyser (qui appelle/utilise ceci ?)
RechercherCtrl+F / boîte de recherche pour les types et les membres
Changer la version de langueListe déroulante de la barre d”outils (C# 1.0 … dernière)
Sauvegarder le projet décompiléFichier → Sauvegarder le code (exporter .csproj complet)

Analyser (Références croisées)

Clic droit → Analyser montre
Instantiated By
Used By
Assigned By / Read By (champs)
Overridden By / Overrides
Exposed By

Ceci est le flux de travail RE principal: choisir une méthode suspecte et tracer qui l”appelle et ce qu”elle touche.

ilspycmd (Ligne de commande)

CommandeDescription
ilspycmd Assembly.dllDécompiler l”assemblage entier vers stdout
ilspycmd -o out/ Assembly.dllDécompiler vers un répertoire
ilspycmd -p -o proj/ Assembly.dllExporter un projet .csproj compilable
ilspycmd -t Namespace.Type Assembly.dllDécompiler un type unique
ilspycmd -il Assembly.dllAfficher l”IL brut au lieu du C#
ilspycmd -lv CSharp10_0 Assembly.dllDéfinir la version du langage C#
ilspycmd --nested-directories -p -o out/ A.dllRefléter les espaces de noms en dossiers
ilspycmd -r LIBDIR Assembly.dllAjouter un chemin de recherche de référence d”assemblage

Inspection des métadonnées et ressources

CibleComment
Ressources intégréesNœud Arbre → Ressources; extraire via Sauvegarder
Tableaux de métadonnéesAffichage → « Metadata » (tableaux bruts, tokens)
Chaînes/ILBasculer la liste déroulante de langue vers IL
PInvoke/natifVisible dans les signatures des méthodes

Flux de travail courants

# Triage d'un exemple .NET suspect: vidage source complet pour grep
ilspycmd -o sample_src/ suspicious.dll
grep -rin "DownloadString\|FromBase64String\|Process.Start" sample_src/

# Récupérer un projet compilable à partir d'une DLL dont vous avez perdu la source
ilspycmd -p -o recovered/ MyLib.dll

# Regarder l'IL brut quand la décompilation C# est obfusquée
ilspycmd -il obfuscated.dll | less

Pour les assemblages fortement obfusqués, associer ILSpy à un déobfuscateur (par ex. de4dot) d”abord, puis décompiler le binaire nettoyé.

ILSpy vs Autres outils .NET

OutilTypeNotes
ILSpyDécompilateur + navigateurGratuit, open-source, CLI + GUI
dnSpy / dnSpyExDécompilateur + débogueurÉditer et déboguer les assemblages
dotPeekDécompilateurGratuit (JetBrains), Windows
ILDASMDésassembleurIL uniquement, livré avec .NET SDK

Ressources