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
| Variante | Comment |
|---|
| GUI Windows | Télécharger l”installateur/zip depuis GitHub Releases |
| GUI multi-plateforme | Compilation AvaloniaILSpy (Linux/macOS) |
CLI (ilspycmd) | dotnet tool install --global ilspycmd |
| VS Code | Installer l”extension « ILSpy .NET Decompiler » |
| Vérifier CLI | ilspycmd --version |
Essentiels de la GUI
| Action | Comment |
|---|
| Ouvrir un assemblage | Fichier → Ouvrir, ou glisser un .dll/.exe |
| Charger les dépendances | ILSpy résout automatiquement les assemblages référencés |
| Naviguer | Étendre l”arbre: assemblage → espace de noms → type → membre |
| Décompiler un membre | Cliquer dessus; le C# apparaît dans le volet principal |
| Analyser les utilisations | Clic droit → Analyser (qui appelle/utilise ceci ?) |
| Rechercher | Ctrl+F / boîte de recherche pour les types et les membres |
| Changer la version de langue | Liste 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)
| Commande | Description |
|---|
ilspycmd Assembly.dll | Décompiler l”assemblage entier vers stdout |
ilspycmd -o out/ Assembly.dll | Décompiler vers un répertoire |
ilspycmd -p -o proj/ Assembly.dll | Exporter un projet .csproj compilable |
ilspycmd -t Namespace.Type Assembly.dll | Décompiler un type unique |
ilspycmd -il Assembly.dll | Afficher l”IL brut au lieu du C# |
ilspycmd -lv CSharp10_0 Assembly.dll | Définir la version du langage C# |
ilspycmd --nested-directories -p -o out/ A.dll | Refléter les espaces de noms en dossiers |
ilspycmd -r LIBDIR Assembly.dll | Ajouter un chemin de recherche de référence d”assemblage |
Inspection des métadonnées et ressources
| Cible | Comment |
|---|
| Ressources intégrées | Nœud Arbre → Ressources; extraire via Sauvegarder |
| Tableaux de métadonnées | Affichage → « Metadata » (tableaux bruts, tokens) |
| Chaînes/IL | Basculer la liste déroulante de langue vers IL |
| PInvoke/natif | Visible 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
| Outil | Type | Notes |
|---|
| ILSpy | Décompilateur + navigateur | Gratuit, open-source, CLI + GUI |
| dnSpy / dnSpyEx | Décompilateur + débogueur | Éditer et déboguer les assemblages |
| dotPeek | Décompilateur | Gratuit (JetBrains), Windows |
| ILDASM | Désassembleur | IL uniquement, livré avec .NET SDK |
Ressources