Compartilhar via


Desassemblador do MSIL (ILDASM.exe)

O Desassemblador do MSIL é uma ferramenta complementar para o Assembler MSIL (Ilasm.exe). Um arquivo executável portável (PE) que contém o código Microsoft intermediate linguagem (MSIL) e cria um arquivo de texto adequado sistema autônomo entrado para Ilasm.exe se obtém ILDASM.exe.

ildasm [options] [PEfilename] [options]

Parâmetros

As seguintes opções estão disponível para o .exe, .dll, .obj e .lib arquivos.

Opção

Descrição

/ saída =nome do arquivo de

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 Texto. inválido com o /text opção.

Novo no .NET estrutura versão 2.0.

/Texto

Exibe sistema autônomo resultados na janela do console, em vez de uma interface gráfica do usuário ou sistema autônomo um arquivo de saída.

/html

Produz a saída no formato HTML. Válido com o /output opção.

Novo no .NET estrutura versão 2.0.

/?

Exibe a sintaxe de comando e opções para a ferramenta.

As seguintes opções adicionais estão disponível para arquivos .exe e .dll.

Opção

Descrição

/bytes

Mostra o número real de bytes em formato hexadecimal, sistema autônomo comentários da instrução.

/caverbal

Produz blobs de atributo personalizado no formulário verbal. O padrão é o formato binário.

Novo no .NET estrutura versão 2.0.

/linenum

Inclui referências a linhas de fonte original.

/nobar

Suprime a janela de pop-up do indicador de progresso desmontagem.

/noca

Suprime a saída de atributos personalizados.

Novo no .NET estrutura versão 2.0.

/pubonly

Desmonta apenas tipos públicos e membros. Equivalente a /visibilidade:PUB.

/quoteallnames

Inclui todos os nomes entre aspas simples.

/raweh

Mostra a exceção tratamento de cláusulas na forma bruta.

/fonte

Mostra linhas de fonte original sistema autônomo comentários.

/tokens

Mostra os símbolos de metadados de classes e membros.

/visibilidade:vis+Vis...]

Desmonta somente tipos ou membros com visibilidade especificada. Os seguintes valores são válido para Vis:

PUB — Pública

PRI — Particular

FAM — Família

ASM — Assembly

FAA — Família e o conjunto

FOA — Família ou assembly

PSC — Escopo privado

Para obter as definições desses modificadores de visibilidade, consulte MethodAttributes e TypeAttributes.

As seguintes opções estão válido para arquivos .exe e .dll para arquivo ou somente de saída do console.

Opção

Descrição

/All

Especifica uma combinação do /header, /bytes, /stats, /classlist, e /tokens opções.

ObservaçãoObservação:
Nas versões do .NET estrutura 1.0 e 1.1, especifica uma combinação da /cabeçalho, /bytes, and /tokens opções.

/classlist

Inclui uma lista de classes definidas no módulo.

Novo no .NET estrutura versão 2.0.

/forward

Usos encaminham declaração de classe.

Novo no .NET estrutura versão 2.0.

/cabeçalho

Inclui informações do arquivo de cabeçalho na saída.

/item:class[::member[(sig]]

Desmonta a seguir dependendo o argumento fornecido:

  • Desmonta o especificadoclasse.

  • Desmonta o especificadomember da classe.

  • Desmonta o memberda classe com a assinatura especificada SIG. O formato de SIG is:

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

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

/noil

Suprime a saída de código do assembly MSIL.

/stats

Inclui estatísticas na imagem.

Novo no .NET estrutura versão 2.0.

/typelist

Produz a lista completa de tipos, para preservar o tipo de pedidos em uma viagem de ida e volta.

Novo no .NET estrutura versão 2.0.

/Unicode

Usa codificação Unicode para saída.

/UTF8

Usa a codificação UTF-8 para a saída. ANSI é o padrão.

As seguintes opções estão válido 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, em que specifier é:

MDHEADER — Mostram a informações de cabeçalho de metadados e tamanhos.

HEX — Mostra sistema autônomo informações em hexadecimal, bem sistema autônomo em palavras.

CSV — Mostram a contagem de registros e tamanhos de heap.

UNREX — Mostre itens não resolvidos externos.

SCHEMA — Mostram as informações de cabeçalho e o esquema de metadados.

RAW — Mostra as tabelas de metadados não processados.

HEAPS — Mostre heaps brutos.

VALIDATE — Valide a consistência dos metadados.

Você pode especificar /metadata várias vezes, com valores diferentes para specifier.

Novo no .NET estrutura versão 2.0.

As opções a seguir são válidas para .lib arquivos para arquivo ou somente de saída do console.

Opção

Descrição

/objectfile=filename

Mostra os metadados de um único objeto de arquivo na biblioteca especificada.

Novo no .NET estrutura versão 2.0.

ObservaçãoObservação:

Todas as opções para ILDASM.exe são sem diferenciação de maiúsculas e minúsculas e é reconhecido pelas três primeiras letras. Por exemplo, /quo é equivalente a /quoteallnames. Opções que especificam argumentos aceitam qualquer um dos dois-pontos (:) ou com um sinal de igual (=) sistema autônomo separador entre a opção e o argumento. Por exemplo, /Output:nome do arquivo de é equivalente a / saída =nome do arquivo de .

Comentários

ILDASM.exe só funciona em arquivos PE no disco. Ele não opera em arquivos instalados no cache global de assemblies.

O arquivo de texto produzido pela ILDASM.exe pode ser usado sistema autônomo entrada para o Assembler MSIL (Ilasm.exe). Isso é útil, por exemplo, durante a compilação de código em uma linguagem de programação que não oferece suporte a todos os atributos de metadados em tempo de execução. Após compilar o código e executar 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 este arquivo de texto por meio de Assembler MSIL para produzir um arquivo executável final.

ObservaçãoObservação:

Atualmente, não é possível usar essa técnica com arquivos PE que contêm código nativo incorporado (por exemplo, arquivos PE produzidos pelo Visual C++).

Você pode usar o padrão GUI no Desassemblador do MSIL para exibir os metadados e o código desmontado dos arquivos PE existentes em um modo de exibição de árvore hierárquica. Para usar a interface gráfica do usuário, digite ILDASM na linha de comando sem fornecer a PEfilename argumento ou todas as opções. From a Arquivo menu, você pode navegar para o arquivo PE que você deseja carregar em ILDASM.exe. Para salvar os metadados e o código desmontado exibido para o PE selecionado, selecionar o Despejo comando a Arquivo menu. Para salvar somente a exibição em árvore hierárquica, selecionar o Despejar TreeView comando a Arquivo menu. Para obter um guia detalhado para carregar um arquivo em ILDASM.exe e interpretar a saída, consulte o tutorial ILDASM.exe, localizado na pasta Exemplos que acompanha o Windows Software Development Kit (SDK).

Se você fornecer um ILDASM.exePEfilename argumento que contém recursos incorporados, 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 .Recursos produzido com o nome do recurso de metadados incorporados. Se um recurso não gerenciado é incorporado em PEfilename, um arquivo .res é produzido com o nome de arquivo especificado para a saída do MSIL pela /Output option*.*

ObservaçãoObservação:

ILDASM.exe mostra somente descrições de metadados para arquivos de entrada .obj e .lib. Código MSIL para esses tipos de arquivo não está desmontado.

Você pode executar o ILDASM.exe sobre arquivo 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 tempo de execução comum linguagem válido e não pode ser desmontado. Se o arquivo for gerenciado, a ferramenta é executada com êxito.

Exemplos

O comando a seguir faz com que os metadados e desmontado código para o do arquivo PE MyHello.exe Para exibir no padrão ILDASM.exe GUI.

ildasm myHello.exe

O comando a seguir desmonta o arquivo MyFile.exe e armazena o texto resultante MSIL Assembler no arquivo MyFile.il.

ildasm MyFile.exe /output:MyFile.il

O comando a seguir desmonta o arquivo MyFile.exe e exibe o texto resultante MSIL Assembler na janela do console.

ildasm MyFile.exe /text

Se o arquivo MyApp.exe contém recursos gerenciado e incorporados, o comando a seguir produz quatro arquivos: MyApp.il, MyApp.res, Icons.resources, e 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 na 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 void o parâmetro e de tiposInt32 and seqüência de caracteres.

ildasm /item:"MyClass::MyMethod(instance void(int32,string)" MyFile.exe /text
ObservaçãoObservação:

No .NET estrutura versões 1.0 e 1.1, o parêntese esquerdo que segue o método nome deve ser equilibrada por um parêntese direito após a assinatura: MyMethod(instance void(int32)). O parêntese de fechamento deve ser omitido no .NET estrutura versão 2.0: MyMethod(instance void(int32).

Para recuperar um static método)Shared método no Visual Basic), omitir a palavra-chave instance. Tipos de classe que não são tipos primitivos, como int32 e string deve incluir o espaço para nome e deve ser precedido pela 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 de tipo AppDomain e tem um tipo de retorno 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, delimitada por uma barra / / invertida. Por exemplo, se o MyNamespace.MyClass classe contém uma classe aninhada chamada NestedClass, a classe aninhada é identificada sistema autônomo segue: class MyNamespace.MyClass/NestedClass.

Consulte também

Conceitos

Compilação para MSIL

Referência

Ferramentas.NET Framework

Assembler MSIL (Ilasm.exe)

Prompt de comando SDK