Partager via


Ildasm.exe (Désassembleur MSIL)

Le Désassembleur MSIL 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.

Cet outil est installé automatiquement avec Visual Studio et avec le Kit de développement logiciel Windows. Pour exécuter l'outil, nous vous recommandons d'utiliser l'invite de commandes Visual Studio ou l'invite de commandes du Kit de développement logiciel (l'interpréteur de commandes CMD). Ces utilitaires vous permettent d'exécuter l'outil facilement, sans naviguer jusqu'au dossier d'installation. Pour plus d'informations, consultez Invites de commandes Visual Studio e t Kit de développement logiciel (SDK) Windows.

  • Si Visual Studio est installé sur votre ordinateur : dans la barre des tâches, cliquez sur le bouton Start, All Programs, Visual Studio, sur Visual Studio Tools, puis sur Visual Studio Command Prompt.

    ou

    Si vous avez le Kit de développement logiciel Windows installé sur votre ordinateur : Dans la barre des tâches, cliquez sur Start, All Programs, le dossier correspondant au Kit de développement logiciel, puis sur Command Prompt (ou CMD Shell).

  • À l'invite de commandes, tapez ce qui suit :

ildasm [options] [PEfilename] [options]

Paramètres

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

Option

Description

/out=NomFichier

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.

RemarqueRemarque
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

/headers

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

/item:class[::member[(sig]]

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

  • Disassemble la classe spécifiée.

  • Désassemble le member spécifié de la classe.

  • Désassemble le member de la classe avec la signature spécifiée sig. sig a le format suivant :

    [instance] returnType(parameterType1, parameterType2, …, parameterTypeN)

    Remarque   Dans les versions 1.0 et 1.1 du .NET Framework, sig doit être suivi par une parenthèse fermante : (sig). Dans la version 2.0, la parenthèse fermante doit être supprimée : (sig.

/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 l'encodage Unicode pour la sortie.

/utf8

Utilise le codage UTF-8 pour la sortie. ANSI correspond à l'encodage 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

RemarqueRemarque

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.

RemarqueRemarque

Actuellement, 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 du Désassembleur MSIL 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. Dans le menu Fichier, vous pouvez naviguer jusqu'au fichier PE que vous souhaitez charger dans Ildasm.exe. Pour enregistrer les métadonnées et le code désassemblé affichés pour le PE 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, qui se trouve dans le dossier Samples fourni avec le Kit de développement logiciel (SDK) Windows.

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*.*

RemarqueRemarque

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 désassemble la méthode d'instance MyMethod avec le type de retour de void et les types de paramètres int32 et string.

ildasm /item:"MyClass::MyMethod(instance void(int32,string)" MyFile.exe /text
RemarqueRemarque

Dans les versions 1.0 et 1.1 du .NET Framework, la parenthèse ouvrante qui suit le nom de la méthode doit être accompagnée d'une parenthèse fermante après la signature : MyMethod(instance void(int32)).Dans la version 2.0 du .NET Framework, la parenthèse fermante doit être supprimée : MyMethod(instance void(int32).

Pour récupérer une méthode static (méthode Shared dans Visual Basic), supprimez le mot clé instance. Les types de classes qui ne sont pas des types primitifs comme int32 et string doivent inclure l'espace de noms et être précédés du mot clé class. Les types externes doivent être précédés du nom de la bibliothèque entre crochets. La commande suivante désassemble une méthode statique nommée MyMethod qui comprend un paramètre de type AppDomain et un type de retour AppDomain.

ildasm /item:"MyClass::MyMethod(class [mscorlib]System.AppDomain(class [mscorlib]System.AppDomain)" MyFile.exe /text

Un type imbriqué doit être précédé de la classe le contenant, délimitée par une barre oblique. Par exemple, si la classe MyNamespace.MyClass contient une classe imbriquée nommée NestedClass, la classe imbriquée est identifiée comme suit : class MyNamespace.MyClass/NestedClass.

Voir aussi

Référence

Ilasm.exe (Assembleur MSIL)

Invites de commandes Visual Studio e t Kit de développement logiciel (SDK) Windows

Concepts

Processus d'exécution managée

Autres ressources

Outils du .NET Framework

Historique des modifications

Date

Historique

Motif

Avril 2011

Informations supplémentaires sur l'utilisation des invites de commandes de Visual Studio et du Kit de développement logiciel (SDK) Windows.

Améliorations apportées aux informations.