Ildasm. exe (desmontador MSIL)
O Desassemblador do MSIL é uma ferramenta complementar para o Assembler MSIL (Ilasm. exe). Ildasm. exe leva de um arquivo executável portável (PE) que contém o código Microsoft intermediate language (MSIL) e cria um arquivo de texto adequado como entrado para Ilasm. exe.
O Desassemblador do MSIL é instalado automaticamente com o Visual Studio. Para iniciar o Desassemblador do MSIL, use o Prompt de comando Visual Studio. No prompt de comando, digite o seguinte:
ildasm [options] [PEfilename] [options]
Parâmetros
As seguintes opções estão disponíveis para o. exe,. dll,. obj e. lib arquivos.
Opção |
Descrição |
---|---|
check-out =nome de arquivo |
Cria um arquivo de saída com o especificado nome de arquivo, em vez de exibir os resultados em uma interface gráfica do usuário. |
/rtf |
Produz a saída no formato rich text. Inválido com o /text opção. Novo na.NET Framework versão 2.0. |
/Text |
Exibe os resultados para a janela de console, em vez de uma interface gráfica do usuário ou como um arquivo de saída. |
/html |
Produz a saída no formato HTML. Válido com a /output opção somente. Novo na.NET Framework versão 2.0. |
/? |
Exibe a sintaxe de comando e opções para a ferramenta. |
As seguintes opções adicionais estão disponíveis para os arquivos. exe e. dll.
Opção |
Descrição |
---|---|
/bytes |
Mostra o número real de bytes em formato hexadecimal, como comentários de instrução. |
/caverbal |
Produz blobs de atributo personalizado no formulário verbal. O padrão é o formato binário. Novo na.NET Framework versão 2.0. |
/linenum |
Inclui referências a linhas de origem original. |
/nobar |
Suprime a janela de pop-up do indicador de progresso de desmontagem. |
/noca |
Suprime a saída de atributos personalizados. Novo na.NET Framework versão 2.0. |
/pubonly |
Desmonta apenas tipos públicos e membros. Equivalente a /visibility:PUB. |
/quoteallnames |
Inclui todos os nomes entre aspas simples. |
/raweh |
Mostra as cláusulas de manipulação de exceção na forma bruta. |
/Source |
Mostra linhas de origem original como comentários. |
/tokens de modo |
Mostra os símbolos de metadados de classes e membros. |
/Visibility:vis+vis...] |
Desmonta somente tipos ou membros com a visibilidade especificado. A seguir estão os valores válidos para vis: PUB — pública PRI — particular FAM — família ASM — Assembly FAA — Family e Assembly FOA — Family ou Assembly PSC — o escopo de Private Para obter definições dos seguintes modificadores de visibilidade, consulte MethodAttributes e TypeAttributes. |
As opções a seguir são válidas para arquivos. exe e. dll para o arquivo ou somente de saída do console.
Opção |
Descrição |
---|---|
/All |
Especifica uma combinação da /header, /bytes, /stats, /classlist, e /tokens Opções. Observação No.NET Framework versões 1.0 e 1.1, especifica uma combinação da /header, /bytes, e /tokens de modo opções. |
/classlist |
Inclui uma lista de classes definidas no módulo. Novo na.NET Framework versão 2.0. |
/forward |
Usa encaminha a declaração de classe. Novo na.NET Framework versão 2.0. |
/headers |
Inclui informações de cabeçalho na saída. |
/item:class::member(sig] |
Desmonta a seguir dependendo o argumento fornecido:
|
/noil |
Suprime a saída de código do assembly MSIL. |
/stats |
Inclui estatísticas de imagem. Novo na.NET Framework versão 2.0. |
/typelist |
Produz a lista completa de tipos, para preservar o tipo de processamento de pedidos. Novo na.NET Framework versão 2.0. |
/Unicode |
Usa a codificação Unicode para a saída. |
/UTF8 |
Usa a codificação UTF-8 para a saída. ANSI é o padrão. |
As opções a seguir são válidas para arquivos. exe,. dll,. obj e. lib para arquivo ou somente de saída do console.
Opção |
Descrição |
---|---|
/metadata[=specifier] |
Mostra os metadados, onde specifier é: MDHEADER— Mostram as informações de cabeçalho de metadados e os tamanhos. HEX— Mostram informações em hexadecimal, bem como em palavras. CSV— Mostram as contagens de registros e os tamanhos de heap. UNREX— Mostre não resolvidos de itens externos. SCHEMA— Mostram as informações de cabeçalho e o esquema de metadados. RAW— Mostram as tabelas de metadados brutos. HEAPS— Mostram as pilhas brutas. VALIDATE— Valide a consistência dos metadados. Você pode especificar /metadata várias vezes, com valores diferentes para specifier. Novo na.NET Framework versão 2.0. |
As opções a seguir são válidas para arquivos. lib para arquivo ou somente de saída do console.
Opção |
Descrição |
---|---|
/objectfile=filename |
Mostra os metadados de um arquivo de objeto único na biblioteca especificada. Novo na.NET Framework versão 2.0. |
Observação
Todas as opções para Ildasm. exe são maiúsculas de minúsculas e reconhecido pelas primeiras três letras.Por exemplo, /quo é equivalente a /quoteallnames.Opções que especificam os argumentos aceitam dois-pontos (:) ou um sinal de igual (=) como separador entre a opção e o argumento.Por exemplo, /saída:nome de arquivo é equivalente a /saída =nome de arquivo.
Comentários
Ildasm. exe só funciona em arquivos PE do disco. Ele não funciona em arquivos instalados no cache global de assemblies.
O arquivo de texto produzido pelo Ildasm. exe pode ser usado como entrada para o Assembler MSIL (Ilasm. exe). Isso é útil, por exemplo, ao compilar o código em uma linguagem de programação não oferece suporte a todos os atributos de metadados de tempo de execução. Após compilar o código e executar a sua saída por meio de ILDASM. exe, o arquivo de texto MSIL resultante pode ser editados manualmente para adicionar os atributos ausentes. É possível executar o arquivo de texto por meio do Assembler MSIL para produzir um arquivo executável final.
Observação
Atualmente, é possível usar essa técnica com arquivos PE que contêm o código nativo incorporado (por exemplo, os arquivos de PE produzidos pelo Visual C++).
Você pode usar a GUI padrão no Desassemblador do MSIL para exibir os metadados e o código desmontado de qualquer arquivo existente do PE em um modo de exibição de árvore hierárquica. Para usar a GUI, digite ildasm na linha de comando sem fornecer a PEfilename argumento ou quaisquer opções. Do arquivo menu, você pode navegar para um arquivo PE que você deseja carregar no Ildasm. exe. Para salvar os metadados e o código desmontado exibido para o PE selecionado, selecione o Dump comando o arquivo menu. Para salvar o modo de exibição de árvore hierárquica, selecione o Despejo Treeview comando o arquivo menu. Para obter um guia detalhado para carregar um arquivo no Ildasm. exe e interpretar a saída, consulte o Tutorial Ildasm. exe, localizado na pasta Samples que acompanha o Windows Software Development Kit (SDK).
Se você fornecer Ildasm. exe com um PEfilename recursos incorporados de argumento que contém, a ferramenta produz vários arquivos de saída: um arquivo de texto que contém código MSIL e, para cada recurso gerenciado, um arquivo. Resources produzido usando o nome do recurso de metadados de incorporados. Se um recurso não gerenciado é incorporado em PEfilename, um arquivo. res é produzido usando o nome de arquivo especificado para a saída do MSIL pela /output opção*.*
Observação
Ildasm. exe mostra apenas descrições de metadados para arquivos de entrada. obj e. lib.O código MSIL para esses tipos de arquivo não é desmontado.
Você pode executar o ildasm. exe sobre o arquivo de an.exe ou. dll para determinar se o arquivo é gerenciado. Se o arquivo não for gerenciado, a ferramenta exibe uma mensagem informando que o arquivo não tem nenhum cabeçalho de runtime de linguagem comum válido e não pode ser desmontado. Se o arquivo é gerenciado, a ferramenta é executada com êxito.
Exemplos
O comando a seguir faz com que os metadados e desmontar o código para o arquivo PE MyHello.exe para exibir no GUI padrão Ildasm. exe.
ildasm myHello.exe
O comando a seguir desmonta o arquivo MyFile.exe e armazena o texto resultante do Assembler MSIL no arquivo MyFile.il.
ildasm MyFile.exe /output:MyFile.il
O comando a seguir desmonta o arquivo MyFile.exe e exibe o texto resultante do Assembler MSIL para a janela do console.
ildasm MyFile.exe /text
Se o arquivo MyApp.exe contém os recursos gerenciados e incorporados, o comando a seguir produz quatro arquivos: MyApp.il, MyApp.res, Icons.resources, and Message.resources:
ildasm MyApp.exe /output:MyApp.il
O comando a seguir desmonta o método MyMethod dentro da classe MyClass em MyFile.exe e exibe a saída para a janela do console.
ildasm /item:MyClass::MyMethod MyFile.exe /text
No exemplo anterior, pode haver vários métodos chamados MyMethod com assinaturas diferentes. O comando a seguir desmonta o método de instância MyMethod com o tipo de retorno de void e os tipos de parâmetro int32 e seqüência de caracteres.
ildasm /item:"MyClass::MyMethod(instance void(int32,string)" MyFile.exe /text
Observação
No.NET Framework versões 1.0 e 1.1, o parêntese esquerdo que segue o nome do método devem ser equilibradas por um parêntese direito após a assinatura: MyMethod(instance void(int32)).No.NET Framework versão 2.0, que o parêntese de fechamento deve ser omitido: MyMethod(instance void(int32).
Para recuperar um static método (Shared método em Visual Basic), omitir a palavra-chave instance. Classe de tipos que não são tipos primitivos como int32 e string deve incluir o espaço para nome e deve ser precedido da palavra-chave class. Tipos externos devem ser precedidos pelo nome da biblioteca entre colchetes. O comando a seguir desmonta um método estático denominado MyMethod que tem um parâmetro do tipo AppDomain e tem um tipo de retorno de AppDomain.
ildasm /item:"MyClass::MyMethod(class [mscorlib]System.AppDomain(class [mscorlib]System.AppDomain)" MyFile.exe /text
Um tipo aninhado deve ser precedido por sua classe recipiente, delimitado por uma barra invertida. Por exemplo, se o MyNamespace.MyClass classe contém uma classe aninhada chamada NestedClass, a classe aninhada é identificada como segue: class MyNamespace.MyClass/NestedClass.
Consulte também
Referência
Prompt de comando Visual Studio
Conceitos
Processo de Execução Gerenciada