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çã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:
|
/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çã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çã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çã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çã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.