Partilhar via


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:

  • Desmonta especificado classe.

  • Desmonta especificado member da classe.

  • Desmonta o memberda classe com a assinatura especificada sig. O formato do sig é:

    [instance] returnType(parameterType1, parameterType2, …, parameterTypeN)

    Notana.NET Framework versões 1.0 e 1.1, sig deve ser seguido por um parêntese de fechamento: (sig). Na versão 2.0, o parêntese de fechamento deve ser omitido: (sig.

/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

Ilasm. exe (Assembler MSIL)

Prompt de comando Visual Studio

Conceitos

Processo de Execução Gerenciada

Outros recursos

Ferramentas.NET Framework