Partager via


MSIL Disassembler (Ildasm.exe)

MSIL Disassembler est un outil associé à l'assembleur MSIL (Ilasm.exe). Ildasm.exe crée, à partir d'un fichier exécutable portable comportant du code MSIL (Microsoft Intermediate Language), un fichier texte pouvant servir d'entrée dans Ilasm.exe.

ildasm [options] [PEfilename] [options]

Paramètres

Les options suivantes sont disponibles pour les fichiers .exe, .dll, .obj et .lib.

Option Description

/output= filename

Crée un fichier de sortie avec le nom de fichierspécifié, au lieu d'afficher les résultats dans une interface utilisateur graphique.

/rtf

Produit la sortie au format RTF. Non valide avec l'option /text.

Nouveau dans la version 2.0 du .NET Framework

/text

Affiche les résultats dans la fenêtre de console, plutôt que dans une interface utilisateur graphique ou dans un fichier de sortie.

/html

Produit la sortie au format HTML. Valide avec l'option /output uniquement.

Nouveau dans la version 2.0 du .NET Framework

/?

Affiche la syntaxe de commande et les options de l'outil.

Les options suivantes sont également disponibles pour les fichiers .exe et .dll.

Option Description

/bytes

Affiche les octets actuels, au format hexadécimal, sous forme de commentaires d'instructions.

/caverbal

Produit des blobs d'attribut personnalisés sous forme verbale. La valeur par défaut est la forme binaire.

Nouveau dans la version 2.0 du .NET Framework

/linenum

Inclut des références dans les lignes sources d'origine.

/nobar

Supprime la fenêtre indépendante de l'indicateur de progression du code machine.

/noca

Supprime la sortie d'attributs personnalisés.

Nouveau dans la version 2.0 du .NET Framework

/pubonly

Désassemble uniquement les membres et les types publics. Équivaut à /visibility:PUB.

/quoteallnames

Entoure tous les noms de guillemets simples.

/raweh

Affiche les clauses de gestion des exceptions sous une forme brute.

/source

Affiche les lignes sources d'origine sous forme de commentaires.

/tokens

Affiche les jetons de métadonnées des classes et des membres.

/visibility: vis [+vis ...]

Désassemble uniquement les types ou les membres avec la visibilité spécifiée. Les valeurs valides pour vis sont les suivantes :

PUB — Public

PRI — Privé

FAM — Famille

ASM — Assembly

FAA — Famille et Assembly

FOA — Famille ou Assembly

PSC — Portée privée

Pour obtenir des définitions de ces modificateurs de visibilité, consultez MethodAttributes et TypeAttributes.

Les options suivantes sont valides pour les fichiers .exe et .dll uniquement à des fins de sortie vers une console ou un fichier.

Option Description

/all

Spécifie une combinaison d'options /header, /bytes, /stats, /classlist et /tokens.

Notes

Dans .NET Framework versions 1.0 et 1.1, il spécifie une combinaison d'options /header, /bytes et /tokens.

/classlist

Inclut une liste de classes définie dans le module.

Nouveau dans la version 2.0 du .NET Framework

/forward

Utilise la déclaration de classe anticipée.

Nouveau dans la version 2.0 du .NET Framework

/header

Inclut les informations d'en-tête du fichier dans la sortie.

/item: class[::method [(sig)]]

Désassemble les éléments suivants en fonction de l'argument fourni :

  • Disassemble la classe spécifiée.

  • Disassemble la méthode spécifiée de la classe.

  • Désassemble la méthode de la classe avec la signature spécifiée sig. Spécifie la signature avec un type de retour et autant de paramètres que nécessaire. Par exemple, returntype (param1, param2,..paramn).

/noil

Supprime la sortie du code assembleur MSIL.

/stats

Inclut des statistiques sur l'image.

Nouveau dans la version 2.0 du .NET Framework

/typelist

Produit la liste complète de types afin de conserver le tri des types en une boucle.

Nouveau dans la version 2.0 du .NET Framework

/unicode

Utilise le codage Unicode pour la sortie.

/utf8

Utilise le codage UTF-8 pour la sortie. ANSI correspond au codage par défaut.

Les options suivantes sont valides pour les fichiers .exe, .dll, .obj et .lib uniquement à des fins de sortie vers une console ou un fichier.

Option Description

/metadata[=specifier]

Affiche les métadonnées, où specifier est :

MDHEADER — Affiche les informations d'en-tête et de taille des métadonnées.

HEX — Affiche les informations en hexadécimales ainsi qu'en mots.

CSV — Affiche le nombre d'enregistrements et les tailles de tas.

UNREX — Affiche les externes non résolus.

SCHEMA — Affiche l'en-tête des métadonnées et les information de schéma.

RAW — Affiche les tables de métadonnées brutes.

HEAPS — Affiche les tas bruts.

VALIDATE — Valide la cohérence des métadonnées.

Vous pouvez spécifier plusieurs fois /metadata, avec des valeurs différentes pour specifier.

Nouveau dans la version 2.0 du .NET Framework

Les options suivantes sont valides pour les fichiers .lib uniquement à des fins de sortie vers une console ou un fichier.

Option Description

/objectfile=filename

Affiche les métadonnées d'un fichier objet seul dans la bibliothèque spécifiée.

Nouveau dans la version 2.0 du .NET Framework

Notes

Toutes les options d'Ildasm.exe ne font pas l'objet d'une distinction minuscules/majuscules et se reconnaissent à leurs trois premières lettres. Par exemple, /quo est équivalent à /quoteallnames. Les options spécifiant des arguments prennent en charge les deux-points (:) ou le signe égal (=) en tant que séparateur entre l'option et l'argument. Par exemple, /output:filename équivaut à /output=filename.

Notes

Ildasm.exe ne fonctionne qu'avec des fichiers exécutables portables stockés sur le disque. Il ne fonctionne pas avec des fichiers installés dans le Global Assembly Cache.

Le fichier texte généré par Ildasm.exe peut servir d'entrée dans l'assembleur MSIL (Ilasm.exe). Cet outil s'avère, par exemple, utile lors de la compilation d'un code dans un langage de programmation ne prenant pas en charge tous les attributs de métadonnées du runtime. Une fois le code compilé et sa sortie exécutée via Ildasm.exe, le fichier texte MSIL obtenu peut être modifié manuellement pour y ajouter les attributs manquants. Vous pouvez ensuite exécuter ce fichier texte via l'assembleur MSIL pour générer un fichier exécutable final.

Notes

Pour l'instant, vous ne pouvez pas utiliser cette technique avec des fichiers exécutables portables qui contiennent du code natif incorporé (par exemple, des fichiers exécutables portables générés par Visual C++).

Vous pouvez utiliser l'interface graphique utilisateur par défaut de MSIL Disassembler pour afficher sous forme d'arborescence le code désassemblé et les métadonnées de tout fichier exécutable portable existant. Pour utiliser l'interface graphique utilisateur, tapez ildasm au niveau de la ligne de commande sans préciser l'argument PEfilename ni d'options. À partir du menu Fichier, vous pouvez naviguer jusqu'au fichier exécutable portable à charger dans Ildasm.exe. Pour enregistrer les métadonnées et le code désassemblé correspondant au fichier exécutable portable sélectionné, sélectionnez la commande Dump dans le menu Fichier. Pour enregistrer uniquement l'affichage sous forme d'arborescence, sélectionnez la commande Dump de l'arborescence dans le menu Fichier. Pour plus d'informations sur le chargement d'un fichier dans Ildasm.exe et sur l'interprétation de la sortie, consultez le didacticiel Ildasm.exe Tutorial, qui se trouve dans le dossier Samples fourni avec le Kit de développement .NET Framework SDK.

Si vous utilisez Ildasm.exe avec un argument PEfilename comportant des ressources incorporées, l'outil génère alors plusieurs fichiers de sortie : un fichier texte comprenant du code MSIL et, pour chaque ressource managée incorporée, un fichier .res généré à l'aide du nom de la ressource issu des métadonnées. Si une ressource non managée est incorporée dans PEfilename, un fichier .res est alors généré à l'aide du nom de fichier spécifié pour la sortie MSIL par l'option /output*.*

Notes

Ildasm.exe affiche uniquement les descriptions des métadonnées des fichiers d'entrée .obj et .lib. Le code MSIL de ces types de fichiers n'est pas désassemblé.

Vous pouvez exécuter Ildasm.exe sur un fichier exe ou .dll pour déterminer s'il s'agit d'un fichier managé. Si le fichier n'est pas managé, l'outil affiche un message indiquant que le fichier ne contient pas d'en-tête du Common Language Runtime valide et qu'il ne peut pas être désassemblé. S'il s'agit d'un fichier managé, l'outil s'exécute correctement.

Exemples

La commande suivante affiche les métadonnées et le code désassemblé du fichier exécutable portable MyHello.exe dans l'interface graphique utilisateur par défaut d'Ildasm.exe.

ildasm myHello.exe

La commande suivante désassemble le fichier MyFile.exe et enregistre le texte de l'assembleur MSIL obtenu dans le fichier MyFile.il.

ildasm MyFile.exe /output:MyFile.il

La commande suivante désassemble le fichier MyFile.exe et affiche le texte de l'assembleur MSIL obtenu dans la fenêtre de console.

ildasm MyFile.exe /text

Si le fichier MyApp.exe contient des ressources managées et non managées incorporées, la commande suivante génère quatre fichiers : MyApp.il, MyApp.res, Icons.resources, et Message.resources :

ildasm MyApp.exe /output:MyApp.il

La commande suivante désassemble la méthode MyMethod figurant dans la classe MyClass de MyFile.exe et affiche la sortie dans la fenêtre de console.

ildasm /item:MyClass::MyMethod MyFile.exe /text

L'exemple précédent peut comporter plusieurs méthodes MyMethod avec différentes signatures. La commande suivante disassemble la méthode MyMethod avec le type de retour de void et les paramètres int32 et System.string.

ildasm /item:"MyClass::MyMethod(void(int32,class System.String))" MyFile.exe /text

Voir aussi

Référence

Outils du .NET Framework
Assembleur MSIL (Ilasm.exe)
Invite de commandes du Kit de développement SDK

Concepts

Compilation en MSIL