Ildasm.exe (IL Disassembler)Ildasm.exe (IL Disassembler)

IL Disassembler je doprovodný nástroj k assembleru IL (Ilasm. exe).The IL Disassembler is a companion tool to the IL Assembler (Ilasm.exe). Ildasm. exe přebírá přenosný spustitelný soubor (PE), který obsahuje kód mezilehlého jazyka (IL) a vytváří textový soubor vhodný jako vstup do Ilasm. exe.Ildasm.exe takes a portable executable (PE) file that contains intermediate language (IL) code and creates a text file suitable as input to Ilasm.exe.

Tento nástroj je automaticky nainstalován se sadou Visual Studio.This tool is automatically installed with Visual Studio. Chcete-li spustit nástroj, použijte Developer Command Prompt pro Visual Studio (nebo příkazový řádek sady Visual Studio v systému Windows 7).To run the tool, use the Developer Command Prompt for Visual Studio (or the Visual Studio Command Prompt in Windows 7). Další informace najdete v tématu výzvy k zadání příkazu.For more information, see Command Prompts.

V příkazovém řádku zadejte následující:At the command prompt, type the following:

SyntaxeSyntax

ildasm [options] [PEfilename] [options]

ParametryParameters

Pro soubory . exe, . dll, . obj, . liba . winmd jsou k dispozici následující možnosti.The following options are available for .exe, .dll, .obj, .lib, and .winmd files.

MožnostOption PopisDescription
/out = filename/out= filename Vytvoří výstupní soubor se zadaným parametrem filenamenamísto zobrazení výsledků v grafickém uživatelském rozhraní.Creates an output file with the specified filename, rather than displaying the results in a graphical user interface.
/rtf/rtf Vytvoří výstup ve formátu RTF (Rich Text Format).Produces output in rich text format. Neplatné s možností /textInvalid with the /text option.
/text/text Zobrazí výsledky v okně konzoly namísto grafického uživatelského rozhraní nebo výstupního souboru.Displays the results to the console window, rather than in a graphical user interface or as an output file.
/html/html Vytvoří výstup ve formátu HTML.Produces output in HTML format. Platí pouze s možností /Output .Valid with the /output option only.
/?/? Zobrazí syntaxi příkazu a možnosti nástroje.Displays the command syntax and options for the tool.

Pro soubory . exe, . dlla . winmd jsou k dispozici následující další možnosti.The following additional options are available for .exe, .dll, and .winmd files.

MožnostOption PopisDescription
/bytes/bytes Zobrazí skutečné bajty v šestnáctkovém formátu jako komentáře k instrukcím.Shows actual bytes, in hexadecimal format, as instruction comments.
/caverbal/caverbal Vytvoří objekty blob vlastních atributů ve slovním vyjádření.Produces custom attribute blobs in verbal form. Výchozím nastavením je binární vyjádření.The default is binary form.
/linenum/linenum Zahrne odkazy do původních zdrojových řádků.Includes references to original source lines.
/nobar/nobar Potlačí místní okno indikátoru průběhu zpětného překladu.Suppresses the disassembly progress indicator pop-up window.
/noca/noca Potlačí výstup vlastních atributů.Suppresses the output of custom attributes.
/project/project Zobrazuje metadata tak, jak se zobrazí spravovanému kódu, namísto způsobu zobrazení v nativním prostředí Windows Runtime.Displays metadata the way it appears to managed code, instead of the way it appears in the native Windows Runtime. Pokud PEfilename není soubor metadat Windows ( . winmd), tato možnost nemá žádný vliv.If PEfilename is not a Windows metadata (.winmd) file, this option has no effect. Viz .NET Framework Podpora aplikací pro Windows Store a prostředí Windows Runtime.See .NET Framework Support for Windows Store Apps and Windows Runtime.
/pubonly/pubonly Zpětně přeloží pouze veřejné typy a členy.Disassembles only public types and members. Ekvivalent /visibility: Pub.Equivalent to /visibility:PUB.
/quoteallnames/quoteallnames Vloží všechny názvy do jednoduchých uvozovek.Includes all names in single quotes.
/raweh/raweh Zobrazí klauzule zpracování výjimek v nezpracovaném tvaru.Shows exception handling clauses in raw form.
/Source/source Zobrazí původní zdrojové řádky jako komentáře.Shows original source lines as comments.
/Tokens/tokens Zobrazí tokeny metadat pro třídy a členy.Shows metadata tokens of classes and members.
/visibility: vis[+vis...]/visibility: vis[+vis...] Zpětně přeloží pouze typy nebo členy se zadanou viditelností.Disassembles only types or members with the specified visibility. Platné jsou následující hodnoty vis:The following are valid values for vis:

Pub – veřejnéPUB — Public

Pri – privátníPRI — Private

FAM – rodinaFAM — Family

ASM – sestaveníASM — Assembly

FAA – řada a sestaveníFAA — Family and Assembly

FOA – řada nebo sestaveníFOA — Family or Assembly

PSC – privátní oborPSC — Private Scope

Definice těchto modifikátorů viditelnosti naleznete v tématech MethodAttributes a TypeAttributes.For definitions of these visibility modifiers, see MethodAttributes and TypeAttributes.

Následující možnosti jsou platné pro soubory . exe, . dlla . winmd pouze pro výstup do souboru nebo konzoly.The following options are valid for .exe, .dll, and .winmd files for file or console output only.

MožnostOption PopisDescription
/All/all Určuje kombinaci možností /header, /bytes, /stats, /classlista /tokens .Specifies a combination of the /header, /bytes, /stats, /classlist, and /tokens options.
/classlist/classlist Zahrne seznam tříd definovaných v modulu.Includes a list of classes defined in the module.
/forward/forward Použije dopřednou deklaraci tříd.Uses forward class declaration.
/Headers/headers Zahrne do výstupu informace z hlavičky souboru.Includes file header information in the output.
/Item: class[ :: member[(sig]]/item: class[:: member[(sig]] V závislosti na zadaných argumentech zpětně přeloží následující:Disassembles the following depending upon the argument supplied:

-Rozloží zadanou class.- Disassembles the specified class.
-Rozloží zadanou member classz.- Disassembles the specified member of the class.
-Rozloží member class sadu se zadaným podpisem sig.- Disassembles the member of the class with the specified signature sig. Formát sig je:The format of sig is:
[instance] returnType(parameterType1, parameterType2, …, parameterTypeN)[instance] returnType(parameterType1, parameterType2, …, parameterTypeN)
Poznámka: V .NET Framework verzích 1,0 a 1,1 sig musí následovat pravá závorka:. (sig)Note In the .NET Framework versions 1.0 and 1.1, sig must be followed by a closing parenthesis: (sig). Počínaje rozhraním .NET Framework 2,0 musí být uzavírací závorka vynechána: (sig.Starting with the Net Framework 2.0 the closing parenthesis must be omitted: (sig.
/noil/noil Potlačí výstup kódu sestavení jazyka IL.Suppresses IL assembly code output.
/stats/stats Vloží statistiky o bitové kopii.Includes statistics on the image.
/typelist/typelist Vytvoří úplný seznam typů pro zachování řazení typů při přenosu.Produces the full list of types, to preserve type ordering in a round trip.
/unicode/unicode Použije pro výstup kódování Unicode.Uses Unicode encoding for the output.
/utf8/utf8 Použije pro výstup kódování UTF-8.Uses UTF-8 encoding for the output. Výchozím je ANSI.ANSI is the default.

Následující možnosti jsou platné pro soubory . exe, . dll, . obj, . liba . winmd pouze pro výstup do souboru nebo konzoly.The following options are valid for .exe, .dll, .obj, .lib, and .winmd files for file or console output only.

MožnostOption PopisDescription
/metadata[=specifier]/metadata[=specifier] Zobrazuje metadata, kde specifier je:Shows metadata, where specifier is:

MDHEADER – zobrazí informace a velikosti záhlaví metadat.MDHEADER — Show the metadata header information and sizes.

Hex – zobrazí informace v šestnáctkové soustavě i v slovech.HEX — Show information in hex as well as in words.

CSV – zobrazit počty záznamů a velikosti haldy.CSV — Show the record counts and heap sizes.

UNREX – zobrazí nerozpoznané externí typy.UNREX — Show unresolved externals.

Schéma – zobrazí hlavičku metadat a informace o schématu.SCHEMA — Show the metadata header and schema information.

Raw – zobrazí nezpracované tabulky metadat.RAW — Show the raw metadata tables.

Haldy – zobrazí nezpracované haldy.HEAPS — Show the raw heaps.

Ověřit – ověří konzistenci metadat.VALIDATE — Validate the consistency of the metadata.

/Metadata můžete zadat vícekrát s různými hodnotami pro specifier.You can specify /metadata multiple times, with different values for specifier.

Následující možnosti jsou platné pro soubory . lib pouze pro výstup do souboru nebo konzoly.The following options are valid for .lib files for file or console output only.

MožnostOption PopisDescription
/objectfile=filename/objectfile=filename Zobrazí metadata souboru jednoho objektu v zadané knihovně.Shows the metadata of a single object file in the specified library.

Poznámka

Všechny možnosti nástroje Ildasm. exe nerozlišují velká a malá písmena, která jsou rozpoznána prvními třemi písmeny.All options for Ildasm.exe are case-insensitive and recognized by the first three letters. Například /quo je ekvivalentem /quoteallnames.For example, /quo is equivalent to /quoteallnames. Možnosti s argumenty přijímají jako oddělovač mezi možností a argumentem dvojtečku (:) nebo symbol rovná se (=).Options that specify arguments accept either a colon (:) or an equal sign (=) as the separator between the option and the argument. Například /output: filename je ekvivalentem /Output = filename.For example, /output: filename is equivalent to /output= filename.

PoznámkyRemarks

Nástroj Ildasm. exe pracuje pouze na souborech PE na disku.Ildasm.exe only operates on PE files on disk. Nepracuje se soubory nainstalovanými do globální mezipaměti sestavení.It does not operate on files installed in the global assembly cache.

Textový soubor vytvořený pomocí programu Ildasm. exe lze použít jako vstup pro rozhraní IL Assembler (Ilasm. exe).The text file produced by Ildasm.exe can be used as input to the IL Assembler (Ilasm.exe). Toho lze využít například při kompilování kódu v programovacím jazyce, který nepodporuje všechny atributy modulu runtime.This is useful, for example, when compiling code in a programming language that does not support all the runtime metadata attributes. Po zkompilování kódu a spuštění jeho výstupu prostřednictvím programu Ildasm. exelze výsledný textový soubor IL ručně upravit a přidat chybějící atributy.After compiling the code and running its output through Ildasm.exe, the resulting IL text file can be hand-edited to add the missing attributes. Poté lze tento textový soubor zpracovat nástrojem IL Assembler a vytvořit konečný spustitelný soubor.You can then run this text file through the IL Assembler to produce a final executable file.

Poznámka

Momentálně nelze tuto techniku použít se soubory PE obsahujícími vložený nativní kód (například PE soubory vytvořené jazykem Visual C++).Currently, you cannot use this technique with PE files that contain embedded native code (for example, PE files produced by Visual C++).

Chcete-li zobrazit metadata a zpětně přeložený kód libovolného existujícího souboru PE v hierarchickém stromovém zobrazení, lze použít výchozí grafické uživatelské rozhraní nástroje IL Disassembler.You can use the default GUI in the IL Disassembler to view the metadata and disassembled code of any existing PE file in a hierarchical tree view. Chcete-li použít grafické uživatelské rozhraní, zadejte text Ildasm na příkazovém řádku bez zadání argumentu PEfilename nebo jakékoli možnosti.To use the GUI, type ildasm at the command line without supplying the PEfilename argument or any options. V nabídce soubor můžete přejít na soubor PE, který chcete načíst do programu Ildasm. exe.From the File menu, you can navigate to the PE file that you want to load into Ildasm.exe. Chcete-li uložit metadata a zpětně přeložený kód pro vybrané prostředí PE, vyberte příkaz pro Výpis paměti v nabídce soubor .To save the metadata and disassembled code displayed for the selected PE, select the Dump command from the File menu. Chcete-li uložit pouze hierarchické zobrazení stromové struktury, vyberte příkaz dump TreeView v nabídce soubor .To save the hierarchical tree view only, select the Dump Treeview command from the File menu. Podrobný průvodce načítání souboru do programu Ildasm. exe a interpretace výstupu naleznete v kurzu Ildasm. exe , který je umístěn ve složce Samples, která je dodávána s Windows SDK.For a detailed guide to loading a file into Ildasm.exe and interpreting the output, see the Ildasm.exe Tutorial, located in the Samples folder that ships with the Windows SDK.

Pokud zadáte Ildasm. exe s argumentem PEfilename , který obsahuje vložené prostředky, nástroj vytvoří více výstupních souborů: textový soubor, který obsahuje kód Il a pro každý vložený spravovaný prostředek, soubor. Resources vytvořený pomocí název prostředku z metadatIf you provide Ildasm.exe with a PEfilename argument that contains embedded resources, the tool produces multiple output files: a text file that contains IL code and, for each embedded managed resource, a .resources file produced using the resource's name from metadata. Pokud je nespravovaný prostředek vložený do PEfilename, vytvoří se soubor. res pomocí parametru /Output zadaného pro výstup Il.If an unmanaged resource is embedded in PEfilename, a .res file is produced using the filename specified for IL output by the /output option.

Poznámka

Nástroj Ildasm. exe zobrazuje pouze popisy metadat pro vstupní soubory . obj a . lib .Ildasm.exe shows only metadata descriptions for .obj and .lib input files. Kód IL není pro tyto typy souborů zpětně překládán.IL code for these file types is not disassembled.

Ildasm. exe můžete spustit přes soubor. exe nebo . dll , abyste zjistili, jestli je soubor spravovaný.You can run Ildasm.exe over an.exe or .dll file to determine whether the file is managed. Není-li soubor spravovaný, nástroj zobrazí zprávu oznamující, že soubor neobsahuje žádnou platnou hlavičku modulu CLR a nelze jej zpětně přeložit.If the file is not managed, the tool displays a message stating that the file has no valid common language runtime header and cannot be disassembled. Pokud soubor spravovaný je, nástroj se úspěšně spustí.If the file is managed, the tool runs successfully.

Informace o verziVersion Information

Od .NET Framework 4,5 nástroj Ildasm. exe zpracovává NEROZPOZNANÝ objekt BLOB pro zařazování (binární rozsáhlý objekt) zobrazením nezpracovaného binárního obsahu.Starting with the .NET Framework 4.5, Ildasm.exe handles an unrecognized marshal BLOB (binary large object) by displaying the raw binary content. Následující kód například ukazuje, jak je zobrazen zařazovací objekt BLOB vygenerovaný programem jazyka C#:For example, the following code shows how a marshal BLOB generated by a C# program is displayed:

public void Test([MarshalAs((short)70)] int test) { }
// IL from Ildasm.exe output
.method public hidebysig instance void Test(int32  marshal({ 46 }) test) cil managed

Od .NET Framework 4,5 nástroj Ildasm. exe zobrazí atributy, které jsou aplikovány na implementace rozhraní, jak je znázorněno v následujícím výňatku z výstupu Ildasm. exe :Starting with the .NET Framework 4.5, Ildasm.exe displays attributes that are applied to interface implementations, as shown in the following excerpt from Ildasm.exe output:

.class public auto ansi beforefieldinit MyClass
  extends [mscorlib]System.Object
  implements IMyInterface
  {
    .interfaceimpl type IMyInterface
    .custom instance void
      [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 )
      …

PříkladyExamples

Následující příkaz způsobí, že metadata a zpětně přeložený kód pro soubor MyHello.exe PE se zobrazí ve výchozím grafickém uživatelském rozhraní Ildasm. exe .The following command causes the metadata and disassembled code for the PE file MyHello.exe to display in the Ildasm.exe default GUI.

ildasm myHello.exe

Následující příkaz zpětně přeloží soubor MyFile.exe a uloží výsledný text IL Assembler do souboru MyFile.Il.The following command disassembles the file MyFile.exe and stores the resulting IL Assembler text in the file MyFile.il.

ildasm MyFile.exe /output:MyFile.il

Následující příkaz zpětně přeloží soubor MyFile.exe a zobrazí výsledný text IL Assembler v okně konzoly.The following command disassembles the file MyFile.exe and displays the resulting IL Assembler text to the console window.

ildasm MyFile.exe /text

Pokud soubor MyApp.exe obsahuje vložené spravované a nespravované prostředky, vytvoří následující příkaz čtyři soubory: MyApp.Il, MyApp. res, ikony. Resources a Message. Resources:If the file MyApp.exe contains embedded managed and unmanaged resources, the following command produces four files: MyApp.il, MyApp.res, Icons.resources, and Message.resources:

ildasm MyApp.exe /output:MyApp.il

Následující příkaz zpětně přeloží metodu MyMethod v rámci třídy MyClass v MyFile.exe a zobrazí výstup do okna konzoly.The following command disassembles the method MyMethod within the class MyClass in MyFile.exe and displays the output to the console window.

ildasm /item:MyClass::MyMethod MyFile.exe /text

V předchozím příkladu může existovat několik metod s názvem MyMethod s různými podpisy.In the previous example, there could be several methods named MyMethod with different signatures. Následující příkaz zpětně přeloží MyMethod metodu instance s návratovým typem void a typy parametrů Int32 a String.The following command disassembles the instance method MyMethod with the return type of void and the parameter types int32 and string.

ildasm /item:"MyClass::MyMethod(instance void(int32,string)" MyFile.exe /text

Poznámka

V .NET Framework verzích 1,0 a 1,1 musí být levá závorka, která následuje za názvem metody, vyrovnávána pravou závorkou za signaturou: MyMethod(instance void(int32)).In the .NET Framework versions 1.0 and 1.1, the left parenthesis that follows the method name must be balanced by a right parenthesis after the signature: MyMethod(instance void(int32)). Počínaje .NET Framework 2,0 musí být uzavírací závorka vynechána: MyMethod(instance void(int32).Starting with the .NET Framework 2.0 the closing parenthesis must be omitted: MyMethod(instance void(int32).

Chcete-li static načíst metoduShared (metodu v Visual Basic), vynechejte instanceklíčové slovo.To retrieve a static method (Shared method in Visual Basic), omit the keyword instance. Typy tříd, které nejsou primitivní typy jako int32 a string musí obsahovat obor názvů a musí předcházet klíčové slovo class.Class types that are not primitive types like int32 and string must include the namespace and must be preceded by the keyword class. Před externími typy musí být uveden název knihovny v hranatých závorkách.External types must be preceded by the library name in square brackets. Následující příkaz zpětně přeloží statickou metodu s názvem MyMethod , která má jeden parametr typu AppDomain a AppDomainmá návratový typ.The following command disassembles a static method named MyMethod that has one parameter of type AppDomain and has a return type of AppDomain.

ildasm /item:"MyClass::MyMethod(class [mscorlib]System.AppDomain(class [mscorlib]System.AppDomain)" MyFile.exe /text

Před vnořeným typem musí být uvedena třída, která jej obsahuje, oddělená lomítkem.A nested type must be preceded by its containing class, delimited by a forward slash. Například pokud MyNamespace.MyClass třída obsahuje vnořenou třídu s názvem NestedClass, vnořená třída je identifikována takto: class MyNamespace.MyClass/NestedClass.For example, if the MyNamespace.MyClass class contains a nested class named NestedClass, the nested class is identified as follows: class MyNamespace.MyClass/NestedClass.

Viz také:See also