Ildasm.exe (Désassembleur IL)Ildasm.exe (IL Disassembler)

Le Désassembleur IL est un outil associé à l'Assembleur IL (Ilasm.exe).The IL Disassembler is a companion tool to the IL Assembler (Ilasm.exe). Ildasm.exe crée, à partir d'un fichier exécutable portable (PE) contenant du code IL (intermediate language), un fichier texte pouvant servir d'entrée dans Ilasm.exe.Ildasm.exe takes a portable executable (PE) file that contains intermediate language (IL) code and creates a text file suitable as input to Ilasm.exe.

Cet outil est installé automatiquement avec Visual Studio.This tool is automatically installed with Visual Studio. Pour exécuter l’outil, utilisez l’invite de commandes développeur pour Visual Studio (ou l’invite de commandes Visual Studio dans Windows 7).To run the tool, use the Developer Command Prompt for Visual Studio (or the Visual Studio Command Prompt in Windows 7). Pour plus d'informations, consultez Invites de commandes.For more information, see Command Prompts.

À l'invite de commandes, tapez le texte suivant :At the command prompt, type the following:

SyntaxeSyntax

ildasm [options] [PEfilename] [options]

ParamètresParameters

Les options suivantes sont disponibles pour les fichiers .exe, .dll, .obj, .lib et .winmd.The following options are available for .exe, .dll, .obj, .lib, and .winmd files.

OptionOption DescriptionDescription
/out= filename/out= filename Crée un fichier de sortie avec le filename spécifié, au lieu d’afficher les résultats dans une interface graphique utilisateur.Creates an output file with the specified filename, rather than displaying the results in a graphical user interface.
/rtf/rtf Produit la sortie au format RTF.Produces output in rich text format. Non valide avec l’option /text.Invalid with the /text option.
/text/text Affiche les résultats dans la fenêtre de console, plutôt que dans une interface graphique utilisateur ou dans un fichier de sortie.Displays the results to the console window, rather than in a graphical user interface or as an output file.
/html/html Produit la sortie au format HTML.Produces output in HTML format. Valide avec l’option /output uniquement.Valid with the /output option only.
/?/? Affiche la syntaxe de commande et les options de l'outil.Displays the command syntax and options for the tool.

Les options suivantes sont également disponibles pour les fichiers .exe, .dll et .winmd.The following additional options are available for .exe, .dll, and .winmd files.

OptionOption DescriptionDescription
/bytes/bytes Affiche les octets actuels, au format hexadécimal, sous forme de commentaires d'instructions.Shows actual bytes, in hexadecimal format, as instruction comments.
/caverbal/caverbal Produit des blobs d'attribut personnalisés sous forme verbale.Produces custom attribute blobs in verbal form. La valeur par défaut est la forme binaire.The default is binary form.
/linenum/linenum Inclut des références dans les lignes sources d'origine.Includes references to original source lines.
/nobar/nobar Supprime la fenêtre pop-up de l'indicateur de progression du code machine.Suppresses the disassembly progress indicator pop-up window.
/noca/noca Supprime la sortie d'attributs personnalisés.Suppresses the output of custom attributes.
/project/project Affiche les métadonnées telles qu'elles apparaissent dans le code managé, plutôt que telles qu'elles apparaissent dans le Windows Runtime natif.Displays metadata the way it appears to managed code, instead of the way it appears in the native Windows Runtime. Si PEfilename n'est pas un fichier de métadonnées Windows ( .winmd), cette option n'a aucun effet.If PEfilename is not a Windows metadata (.winmd) file, this option has no effect. Consultez Prise en charge .NET Framework pour les applications Windows Store et Windows Runtime.See .NET Framework Support for Windows Store Apps and Windows Runtime.
/pubonly/pubonly Désassemble uniquement les membres et les types publics.Disassembles only public types and members. Équivaut à /visibility:PUB.Equivalent to /visibility:PUB.
/quoteallnames/quoteallnames Entoure tous les noms de guillemets simples.Includes all names in single quotes.
/raweh/raweh Affiche les clauses de gestion des exceptions sous une forme brute.Shows exception handling clauses in raw form.
/source/source Affiche les lignes sources d'origine sous forme de commentaires.Shows original source lines as comments.
/tokens/tokens Affiche les jetons de métadonnées des classes et des membres.Shows metadata tokens of classes and members.
/visibility: vis[+vis...]/visibility: vis[+vis...] Désassemble uniquement les types ou les membres avec la visibilité spécifiée.Disassembles only types or members with the specified visibility. Les valeurs valides pour vis sont les suivantes :The following are valid values for vis:

PUB — PublicPUB — Public

PRI — PrivéPRI — Private

FAM — FamilleFAM — Family

ASM — AssemblyASM — Assembly

FAA — Famille et AssemblyFAA — Family and Assembly

FOA — Famille ou AssemblyFOA — Family or Assembly

PSC — Portée privéePSC — Private Scope

Pour obtenir des définitions de ces modificateurs de visibilité, consultez MethodAttributes et TypeAttributes.For definitions of these visibility modifiers, see MethodAttributes and TypeAttributes.

Les options suivantes sont valides pour les fichiers .exe, .dll et .winmd uniquement à des fins de sortie vers une console ou un fichier uniquement.The following options are valid for .exe, .dll, and .winmd files for file or console output only.

OptionOption DescriptionDescription
/all/all Spécifie une combinaison des options /header, /bytes, /stats, /classlist et /tokens.Specifies a combination of the /header, /bytes, /stats, /classlist, and /tokens options.
/classlist/classlist Inclut une liste de classes définie dans le module.Includes a list of classes defined in the module.
/forward/forward Utilise la déclaration de classe anticipée.Uses forward class declaration.
/headers/headers Inclut les informations d'en-tête du fichier dans la sortie.Includes file header information in the output.
/item: class[ :: member[(sig]]/item: class[:: member[(sig]] Désassemble les éléments suivants en fonction de l’argument fourni :Disassembles the following depending upon the argument supplied:

- Désassemble la class spécifiée.- Disassembles the specified class.
- Désassemble le member spécifié de la class.- Disassembles the specified member of the class.
- Désassemble le member de la class avec la signature spécifiée sig.- Disassembles the member of the class with the specified signature sig. Le format de sig est le suivant :The format of sig is:
[instance] returnType(parameterType1, parameterType2, …, parameterTypeN)[instance] returnType(parameterType1, parameterType2, …, parameterTypeN)
Remarque Dans les versions 1.0 et 1.1 du .NET Framework, sig doit être suivi d’une parenthèse fermante : (sig).Note In the .NET Framework versions 1.0 and 1.1, sig must be followed by a closing parenthesis: (sig). À compter de .NET Framework 2.0, la parenthèse fermante doit être omise : (sig.Starting with the Net Framework 2.0 the closing parenthesis must be omitted: (sig.
/noil/noil Supprime la sortie du code d'assembly IL.Suppresses IL assembly code output.
/stats/stats Inclut des statistiques sur l'image.Includes statistics on the image.
/typelist/typelist Produit la liste complète des types afin de conserver le classement des types dans un aller-retour.Produces the full list of types, to preserve type ordering in a round trip.
/unicode/unicode Utilise l'encodage Unicode pour la sortie.Uses Unicode encoding for the output.
/utf8/utf8 Utilise l'encodage UTF-8 pour la sortie.Uses UTF-8 encoding for the output. ANSI est la valeur par défaut.ANSI is the default.

Les options suivantes sont valides pour les fichiers .exe, .dll, .obj, .lib et .winmd uniquement pour la sortie vers le fichier ou vers la console.The following options are valid for .exe, .dll, .obj, .lib, and .winmd files for file or console output only.

OptionOption DescriptionDescription
/metadata[=specifier]/metadata[=specifier] Affiche les métadonnées, où specifier est :Shows metadata, where specifier is:

MDHEADER — Affiche les informations d’en-tête et de taille des métadonnées.MDHEADER — Show the metadata header information and sizes.

HEX — Affiche les informations en hexadécimales ainsi qu’en mots.HEX — Show information in hex as well as in words.

CSV — Affiche les nombres d’enregistrements et les tailles de tas.CSV — Show the record counts and heap sizes.

UNREX — Affiche les externes non résolus.UNREX — Show unresolved externals.

SCHEMA — Affiche les informations relatives au schéma et à l’en-tête des métadonnées.SCHEMA — Show the metadata header and schema information.

RAW — Affiche les tables de métadonnées brutes.RAW — Show the raw metadata tables.

HEAPS — Affiche les tas bruts.HEAPS — Show the raw heaps.

VALIDATE — Valide la cohérence des métadonnées.VALIDATE — Validate the consistency of the metadata.

Vous pouvez spécifier plusieurs fois /metadata, avec des valeurs différentes pour specifier.You can specify /metadata multiple times, with different values for specifier.

Les options suivantes sont valides pour les fichiers .lib uniquement pour la sortie vers la console ou vers le fichier.The following options are valid for .lib files for file or console output only.

OptionOption DescriptionDescription
/objectfile=filename/objectfile=filename Affiche les métadonnées d'un fichier objet seul dans la bibliothèque spécifiée.Shows the metadata of a single object file in the specified library.

Notes

Aucune option d’Ildasm.exe ne respecte pas la casse et toutes sont reconnues à leurs trois premières lettres.All options for Ildasm.exe are case-insensitive and recognized by the first three letters. Par exemple, /quo est équivalent à /quoteallnames.For example, /quo is equivalent to /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.Options that specify arguments accept either a colon (:) or an equal sign (=) as the separator between the option and the argument. Par exemple, /output: filename équivaut à /output= filename.For example, /output: filename is equivalent to /output= filename.

RemarquesRemarks

Ildasm.exe ne fonctionne qu'avec des fichiers exécutables portables stockés sur le disque.Ildasm.exe only operates on PE files on disk. Il ne fonctionne pas avec des fichiers installés dans le Global Assembly Cache.It does not operate on files installed in the global assembly cache.

Le fichier texte généré par Ildasm.exe peut servir d'entrée dans l'Assembleur IL (Ilasm.exe).The text file produced by Ildasm.exe can be used as input to the IL Assembler (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.This is useful, for example, when compiling code in a programming language that does not support all the runtime metadata attributes. Une fois le code compilé et la sortie exécutée via Ildasm.exe, le fichier texte IL obtenu peut être modifié manuellement pour y ajouter les attributs manquants.After compiling the code and running its output through Ildasm.exe, the resulting IL text file can be hand-edited to add the missing attributes. Vous pouvez ensuite exécuter ce fichier texte via l'Assembleur IL pour générer un fichier exécutable final.You can then run this text file through the IL Assembler to produce a final executable file.

Notes

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++).Currently, you cannot use this technique with PE files that contain embedded native code (for example, PE files produced by Visual C++).

Vous pouvez utiliser l’interface graphique utilisateur par défaut du Désassembleur IL pour afficher, sous forme d’arborescence, le code désassemblé et les métadonnées de tout fichier exécutable portable existant.You can use the default GUI in the IL Disassembler to view the metadata and disassembled code of any existing PE file in a hierarchical tree view. Pour utiliser l’interface graphique utilisateur, tapez ildasm au niveau de la ligne de commande sans préciser l’argument PEfilename ni d’options.To use the GUI, type ildasm at the command line without supplying the PEfilename argument or any options. Dans le menu Fichier, vous pouvez naviguer jusqu’au fichier PE que vous souhaitez charger dans Ildasm.exe.From the File menu, you can navigate to the PE file that you want to load into 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.To save the metadata and disassembled code displayed for the selected PE, select the Dump command from the File menu. Pour enregistrer uniquement l’affichage d’arborescence hiérarchique, sélectionnez la commande Dump de l’arborescence dans le menu Fichier.To save the hierarchical tree view only, select the Dump Treeview command from the File menu. Pour plus d’informations sur le chargement d’un fichier dans Ildasm.exe et 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.For a detailed guide to loading a file into Ildasm.exe and interpreting the output, see the Ildasm.exe Tutorial, located in the Samples folder that ships with the Windows Software Development Kit (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 IL et, pour chaque ressource managée incorporée, un fichier .resources généré à l’aide du nom de la ressource issu des métadonnées.If you provide Ildasm.exe with a PEfilename argument that contains embedded resources, the tool produces multiple output files: a text file that contains IL code and, for each embedded managed resource, a .resources file produced using the resource's name from metadata. Si une ressource non managée est incorporée dans PEfilename, un fichier .res est généré à l’aide du nom de fichier spécifié pour la sortie IL par l’option /output.If an unmanaged resource is embedded in PEfilename, a .res file is produced using the filename specified for IL output by the /output option.

Notes

Ildasm.exe affiche uniquement les descriptions des métadonnées des fichiers d’entrée .obj et .lib.Ildasm.exe shows only metadata descriptions for .obj and .lib input files. Le code IL de ces types de fichiers n'est pas désassemblé.IL code for these file types is not disassembled.

Vous pouvez exécuter Ildasm.exe sur un fichier .exe ou .dll pour déterminer s’il s’agit d’un fichier managé.You can run Ildasm.exe over an.exe or .dll file to determine whether the file is managed. 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é.If the file is not managed, the tool displays a message stating that the file has no valid common language runtime header and cannot be disassembled. S'il s'agit d'un fichier managé, l'outil s'exécute correctement.If the file is managed, the tool runs successfully.

Informations sur la versionVersion Information

À compter de .NET Framework 4.5, Ildasm.exe gère un objet blob (Binary Large Object) marshal non reconnu en affichant le contenu binaire brut.Starting with the .NET Framework 4.5, Ildasm.exe handles an unrecognized marshal BLOB (binary large object) by displaying the raw binary content. Par exemple, le code suivant montre comment un BLOB marshal généré par un programme C# s'affiche :For example, the following code shows how a marshal BLOB generated by a C# program is displayed:

public void Test([MarshalAs((short)70)] int test) { }
// IL from Ildasm.exe output
.method public hidebysig instance void Test(int32  marshal({ 46 }) test) cil managed

À compter de .NET Framework 4.5, Ildasm.exe affiche les attributs qui sont appliqués aux implémentations d’interfaces, comme indiqué dans l’extrait suivant de la sortie du fichier Ildasm.exe :Starting with the .NET Framework 4.5, Ildasm.exe displays attributes that are applied to interface implementations, as shown in the following excerpt from Ildasm.exe output:

.class public auto ansi beforefieldinit MyClass
  extends [mscorlib]System.Object
  implements IMyInterface
  {
    .interfaceimpl type IMyInterface
    .custom instance void
      [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 )
      …

ExemplesExamples

La commande suivante affiche les métadonnées et le code désassemblé du fichier PE MyHello.exe dans l’interface graphique utilisateur par défaut d’Ildasm.exe.The following command causes the metadata and disassembled code for the PE file MyHello.exe to display in the Ildasm.exe default GUI.

ildasm myHello.exe

La commande suivante désassemble le fichier MyFile.exe et enregistre le texte de l'Assembleur IL obtenu dans le fichier MyFile.il.The following command disassembles the file MyFile.exe and stores the resulting IL Assembler text in the file MyFile.il.

ildasm MyFile.exe /output:MyFile.il

La commande suivante désassemble le fichier MyFile.exe et affiche le texte de l'Assembleur IL obtenu dans la fenêtre de console.The following command disassembles the file MyFile.exe and displays the resulting IL Assembler text to the console window.

ildasm MyFile.exe /text

Si le fichier MyApp.exe intègre des ressources managées et non managées, la commande suivante génère quatre fichiers : MyApp.il, MyApp.res, Icons.resources et Message.resources :If the file MyApp.exe contains embedded managed and unmanaged resources, the following command produces four files: MyApp.il, MyApp.res, Icons.resources, and 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.The following command disassembles the method MyMethod within the class MyClass in MyFile.exe and displays the output to the console window.

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

L'exemple précédent peut comporter plusieurs méthodes nommées MyMethod avec différentes signatures.In the previous example, there could be several methods named MyMethod with different signatures. La commande suivante désassemble la méthode d’instance MyMethod avec le type de retour void et les types de paramètres int32 et string.The following command disassembles the instance method MyMethod with the return type of void and the parameter types int32 and string.

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

Notes

Dans les versions 1.0 et 1.1 du .NET Framework, la parenthèse gauche qui suit le nom de la méthode doit être accompagnée d'une parenthèse droite après la signature : MyMethod(instance void(int32)).In the .NET Framework versions 1.0 and 1.1, the left parenthesis that follows the method name must be balanced by a right parenthesis after the signature: MyMethod(instance void(int32)). Dans la version 2.0 du .NET Framework, la parenthèse de fermeture doit être supprimée : MyMethod(instance void(int32).Starting with the .NET Framework 2.0 the closing parenthesis must be omitted: MyMethod(instance void(int32).

Pour récupérer une méthode static (méthode Shared dans Visual Basic), supprimez le mot clé instance.To retrieve a static method (Shared method in Visual Basic), omit the keyword 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.Class types that are not primitive types like int32 and string must include the namespace and must be preceded by the keyword class. Les types externes doivent être précédés du nom de la bibliothèque entre crochets.External types must be preceded by the library name in square brackets. 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.The following command disassembles a static method named MyMethod that has one parameter of type AppDomain and has a return type of 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.A nested type must be preceded by its containing class, delimited by a forward slash. 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.For example, if the MyNamespace.MyClass class contains a nested class named NestedClass, the nested class is identified as follows: class MyNamespace.MyClass/NestedClass.

Voir aussiSee also