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