Share via


Desensamblador de MSIL (Ildasm.exe)

El desensamblador de MSIL (MSIL Disassembler) es una herramienta complementaria del ensamblador de MSIL (Ilasm.exe). A partir de un archivo ejecutable portable (PE) que contiene código MSIL (Lenguaje intermedio de Microsoft), Ildasm.exe crea un archivo de texto apropiado como entrada para Ilasm.exe.

ildasm [options] [PEfilename] [options]

Parámetros

Las opciones siguientes se pueden utilizar con archivos .exe, .dll, .obj y .lib.

Opción Descripción

/output= filename

Crea un archivo de resultados con el argumento filename especificado, en lugar de mostrar los resultados en una interfaz gráfica de usuario.

/rtf

Genera los resultados en formato de texto enriquecido. Esta opción no es válida si se utiliza junto con la opción /text.

Se trata de una novedad de la versión 2.0 de .NET Framework.

/text

Muestra los resultados en la ventana de consola, en lugar de presentarlos en una interfaz gráfica de usuario o en un archivo de resultados.

/html

Genera los resultados en formato HTML. Esta opción sólo es válida junto con la opción /output.

Se trata de una novedad de la versión 2.0 de .NET Framework.

/?

Muestra la sintaxis de comandos y opciones para la herramienta.

Las opciones adicionales siguientes se pueden utilizar con archivos .exe y .dll.

Opción Descripción

/bytes

Muestra bytes reales, en formato hexadecimal, como comentarios de instrucciones.

/caverbal

Genera objetos binarios de atributos personalizados en formato verbal. El valor predeterminado es el formato binario.

Se trata de una novedad de la versión 2.0 de .NET Framework.

/linenum

Incluye referencias a líneas de código fuente originales.

/nobar

Suprime el indicador de progreso del desensamblado en la ventana emergente.

/noca

Suprime los resultados de atributos personalizados.

Se trata de una novedad de la versión 2.0 de .NET Framework.

/pubonly

Desensambla sólo miembros y tipos "public". Equivale a /visibility:PUB.

/quoteallnames

Incluye todos los nombres entre comillas simples.

/raweh

Muestra cláusulas de control de excepciones en formato sin procesar.

/source

Muestra líneas de código fuente originales como comentarios.

/tokens

Muestra símbolos (token) de metadatos de clases y miembros.

/visibility: vis [+vis ...]

Desensambla sólo tipos o miembros con la visibilidad especificada. Los valores válidos para vis son los siguientes:

PUB — Público

PRI — Privado

FAM — Familia

ASM — Ensamblado

FAA — Familia y ensamblado

FOA — Familia o ensamblado

PSC — Ámbito privado

Para obtener definiciones de estos modificadores de visibilidad, vea MethodAttributes y TypeAttributes.

Las opciones siguientes sólo se pueden utilizar con archivos .exe y .dll para resultados en consola o en archivo.

Opción Descripción

/all

Especifica una combinación de las opciones /header, /bytes, /stats, /classlist y /tokens.

Nota

En las versiones 1.0 y 1.1 de .NET Framework, especifica una combinación de las opciones /header, /bytes y /tokens.

/classlist

Incluye una lista de las clases definidas en el módulo.

Se trata de una novedad de la versión 2.0 de .NET Framework.

/forward

Utiliza la declaración de clase de envío.

Se trata de una novedad de la versión 2.0 de .NET Framework.

/header

Incluye información sobre encabezados de archivos en los resultados.

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

Desensambla los elementos siguientes dependiendo del argumento que se proporcione:

  • Desensambla la clase especificada mediante el argumento class.

  • Desensambla el método especificado por el argumento method correspondiente a la clase indicada por class.

  • Desensambla el método indicado por el argumento method de la clase especificada mediante class con la firma indicada por sig. La firma debe especificarse con un tipo de valor devuelto y los parámetros que sean necesarios. Por ejemplo, returntype (param1, param2, ...paramn).

/noil

Suprime el código resultante producido por el ensamblado de MSIL.

/stats

Incluye estadísticas en la imagen.

Se trata de una novedad de la versión 2.0 de .NET Framework.

/typelist

Genera la lista completa de tipos, para mantener el orden de tipos en una acción de ida y vuelta.

Se trata de una novedad de la versión 2.0 de .NET Framework.

/unicode

Utiliza codificación Unicode para los resultados.

/utf8

Utiliza codificación UTF-8 para los resultados. El valor predeterminado es ANSI.

Las opciones siguientes sólo se pueden utilizar con archivos .exe, .dll, .obj y .lib para resultados en consola o en archivo.

Opción Descripción

/metadata[=specifier]

Muestra metadatos, donde specifier es:

MDHEADER — Muestra la información y los tamaños del encabezado de metadatos.

HEX — Muestra información tanto en hexadecimal como en palabras.

CSV — Muestra los contadores de registros y los tamaños de los montones.

UNREX — Muestra externos sin resolver.

SCHEMA — Muestra información del esquema y del encabezado de metadatos.

RAW — Muestra las tablas de metadatos sin formato.

HEAPS — Muestra los montones sin formato.

VALIDATE — Valida la coherencia de los metadatos.

Puede especificar /metadata varias veces, con distintos valores para specifier.

Se trata de una novedad de la versión 2.0 de .NET Framework.

Las siguientes opciones sólo se pueden utilizar con archivos .lib para mostrar los resultados en la consola o en un archivo.

Opción Description

/objectfile=filename

Muestra los metadatos de un único archivo objeto en la biblioteca especificada.

Se trata de una novedad de la versión 2.0 de .NET Framework.

Nota

Todas las opciones de Ildasm.exe no distinguen entre mayúsculas y minúsculas y se reconocen mediante las tres primeras letras. Por ejemplo, /quo equivale a /quoteallnames. Las opciones que especifican argumentos aceptan un signo de dos puntos (:) o un signo igual (=) como separador entre la opción y el argumento. Por ejemplo, /output:filename equivale a /output=filename.

Comentarios

Ildasm.exe sólo opera en archivos ejecutables portables (PE) existentes en disco. No opera en archivos instalados en la caché de ensamblados global.

El archivo de texto creado por Ildasm.exe se puede utilizar como entrada del ensamblador de MSIL (Ilasm.exe). Esta técnica es muy útil cuando, por ejemplo, se compila código en un lenguaje de programación que no admite todos los atributos de metadatos en tiempo de ejecución. Una vez compilado el código y ejecutados los resultados mediante Ildasm.exe, el archivo de texto de MSIL resultante se puede editar manualmente para agregar los atributos que faltan. A continuación, se puede ejecutar este archivo de texto mediante el ensamblador de MSIL para producir un archivo ejecutable final.

Nota

Actualmente no se puede utilizar esta técnica con archivos PE que contienen código nativo incrustado (por ejemplo, archivos PE producidos por Visual C++).

Se puede utilizar la interfaz gráfica para el usuario predeterminada en el desensamblador de MSIL para ver los metadatos y el código desensamblado de los archivos PE existentes en una vista jerárquica de árbol. Para utilizar dicha interfaz, se ha de escribir ildasm en la línea de comandos sin proporcionar el argumento PEfilename ni opciones. En el menú Archivo es posible desplazarse al archivo PE que se desee cargar en Ildasm.exe. Para guardar los metadatos y el código desensamblado que se muestran en el archivo PE seleccionado, hay que elegir el comando Volcar en el menú Archivo. Para guardar únicamente la vista jerárquica de árbol, hay que elegir el comando Volcar TreeView en el menú Archivo. Para obtener una guía detallada de cómo se carga un archivo en Ildasm.exe y cómo se interpretan los resultados, vea el tutorial de Ildasm.exe, ubicado en la carpeta de ejemplos que se incluye en .NET Framework SDK.

Si se ejecuta Ildasm.exe indicando un nombre de archivo que contenga recursos incrustados, mediante el argumento PEfilename, la herramienta crea varios archivos de resultados: un archivo de texto que contiene código MSIL y, para cada recurso administrado incrustado, un nuevo archivo .resources cuyo nombre será el del recurso tal y como se denomina en los metadatos. Si un recurso no administrado se incrusta en el argumento PEfilename, se crea un archivo .res utilizando el nombre de archivo especificado por la opción /output para los resultados MSIL*.*

Nota

Ildasm.exe sólo muestra descripciones de metadatos para archivos de entrada .obj y .lib. El código MSIL de estos tipos de archivos no se desensambla.

Puede ejecutar Ildasm.exe sobre un archivo .exe .dll para determinar si está administrado. Si el archivo no está administrado, la herramienta muestra un mensaje que indica que el archivo no tiene encabezado válido de Common Language Runtime y no se puede desensamblar. Si el archivo está administrado, la herramienta se ejecuta correctamente.

Ejemplos

El comando siguiente permite que los metadatos y el código desensamblado del archivo ejecutable portable (PE) MyHello.exe se muestren en la interfaz gráfica para el usuario predeterminada de Ildasm.exe.

ildasm myHello.exe

El comando siguiente desensambla el archivo MyFile.exe y almacena el texto del ensamblador de MSIL resultante en el archivo MyFile.il.

ildasm MyFile.exe /output:MyFile.il

El comando siguiente desensambla el archivo MyFile.exe y muestra el texto del ensamblador de MSIL resultante en la ventana de consola.

ildasm MyFile.exe /text

Si el archivo MyApp.exe contiene recursos incrustados administrados y no administrados, el comando siguiente produce cuatro archivos: MyApp.il, MyApp.res, Icons.resources, y Message.resources:

ildasm MyApp.exe /output:MyApp.il

El comando siguiente desensambla el método MyMethod de la clase MyClass en MyFile.exe y muestra los resultados en la ventana de consola.

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

En el ejemplo anterior podría haber varios métodos MyMethod con firmas diferentes. El siguiente comando desensambla el método MyMethod con el tipo de valor devuelto void y los parámetros int32 y System.String.

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

Vea también

Referencia

Herramientas de .NET Framework
Ensamblador de MSIL (Ilasm.exe)
Símbolo del sistema de SDK

Conceptos

Compilar en lenguaje intermedio de Microsoft (MSIL)