Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Ildasm.exe (Désassembleur IL)

Le Désassembleur IL est un outil associé à l'Assembleur IL (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.

Cet outil est installé automatiquement avec Visual Studio. Pour exécuter l'outil, utilisez l'invite de commandes développeur (ou l'invite de commandes Visual Studio dans Windows 7). Pour plus d'informations, consultez Invite de commandes Visual Studio.

À l'invite de commandes, tapez le texte suivant :

ildasm [options] [PEfilename] [options]

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

Option

Description

/out= filename

Crée un fichier de sortie avec le filenamespé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.

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

/?

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

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

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.

/linenum

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

/nobar

Supprime la fenêtre pop-up de l'indicateur de progression du code machine.

/noca

Supprime la sortie d'attributs personnalisés.

/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. Si PEfilename n'est pas un fichier de métadonnées Windows (.winmd), cette option n'a aucun effet. Consultez .NET Framework Support for Windows Store Apps and Windows Runtime.

/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, .dll et .winmd uniquement à des fins de sortie vers une console ou un fichier uniquement.

Option

Description

/all

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

/classlist

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

/forward

Utilise la déclaration de classe anticipée.

/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 :

  • Désassemble la classe spécifiée.

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

  • Désassemble le member de la class 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 de fermeture : (sig). Dans la version 2.0 du .NET Framework, la parenthèse de fermeture doit être supprimée : (sig.

/noil

Supprime la sortie du code d'assembly IL.

/stats

Inclut des statistiques sur l'image.

/typelist

Produit la liste complète des types afin de conserver le classement des types dans un aller-retour.

/unicode

Utilise l'encodage Unicode pour la sortie.

/utf8

Utilise l'encodage UTF-8 pour la sortie. ANSI est la valeur par défaut.

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.

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 les nombres d'enregistrements et les tailles de tas.

UNREX — Affiche les externes non résolus.

SCHEMA — Affiche les informations relatives au schéma et à l'en-tête des métadonnées.

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 les /metadata, avec des valeurs différentes pour specifier.

Les options suivantes sont valides pour les fichiers .lib uniquement pour la sortie vers la console ou vers le fichier.

Option

Description

/objectfile=filename

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

Remarque Remarque

Toutes les options d'Ildasm.exe ne respectent pas la casse et sont reconnues grâce à 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.

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 IL (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 la sortie exécutée via Ildasm.exe, le fichier texte IL obtenu peut être modifié manuellement pour y ajouter les attributs manquants. Vous pouvez ensuite exécuter ce fichier texte via l'Assembleur IL pour générer un fichier exécutable final.

Remarque Remarque

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 IL 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 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 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 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. 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 IL par l'option /output.

Remarque Remarque

Ildasm.exe affiche uniquement les descriptions des métadonnées des fichiers d'entrée .obj et .lib. Le code IL 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.

Informations sur la version

Dans .NET Framework 4,5, Ildasm.exe gère un BLOB (binary large object) marshal non reconnu en affichant le contenu binaire brut. Par exemple, le code suivant montre comment un BLOB marshal généré par un programme C# s'affiche :

    // C#
    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

Dans .NET Framework 4,5, Ildasm.exe affiche les attributs qui sont appliqués aux implémentations d'interfaces, comme indiqué dans l'extrait suivant à partir d'Ildasm.exe :

.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 )
      …

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.

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.

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.

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 nommées MyMethod avec différentes 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.

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 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)). Dans la version 2.0 du .NET Framework, la parenthèse de fermeture 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.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft