Ildasm.exe(IL 反汇编程序)

发布时间:2020-07-21编辑:佚名阅读(1700)

IL 反汇编程序是 IL 汇编程序 (Ilasm.exe) 的配套工具。 Ildasm.exe 可利用包含中间语言 (IL) 代码的可移植可执行 (PE) 文件,并创建适合输入到 Ilasm.exe 的文本文件。

此工具会自动随 Visual Studio 一起安装。 若要运行此工具,请使用 Visual Studio 开发人员命令提示(或 Windows 7 中的 Visual Studio 命令提示)。 有关详细信息,请参阅命令提示

在命令提示符处,键入以下内容:

语法

控制台复制

ildasm [options] [PEfilename] [options]

参数

下列选项可用于 .exe、.dll、.obj、.lib 和 .winmd 文件。

下列附加选项可用于 .exe、.dll 和 .winmd 文件。

参数
选项描述
/out= filename创建具有指定 filename 的输出文件,而不是在图形用户界面中显示结果。
/rtf以 RTF 格式生成输出。 与 /text 选项一起使用时无效。
/text将结果显示到控制台窗口,而不是显示在图形用户界面中或显示为输出文件。
/html以 HTML 格式生成输出。 与 /output 选项一起使用时才有效。
/?显示此工具的命令语法和选项。
参数
选项描述
/bytes以十六进制格式显示作为指令注释的实际字节。
/caverbal以文字形式生成自定义特性 Blob。 默认为二进制形式。
/linenum包含对原始源行的引用。
/nobar禁止显示反汇编进度指示器弹出窗口。
/noca禁止显示自定义特性的输出。
/project以托管代码的方式显示元数据,而不是以本机 Windows 运行时的方式显示。 如果 PEfilename 不是 Windows 元数据 (.winmd) 文件,此选项将不起任何作用。 请参阅 Windows 应用商店应用和 Windows 运行时的 .NET Framework 支持
/pubonly仅反汇编公共类型和公共成员。 等效于 /visibility:PUB。
/quoteallnames在单引号中包含所有名称。
/raweh以原始格式显示异常处理子句。
/source以注释形式显示原始源行。
/tokens显示类和成员的元数据标记。
/visibility: vis[+vis...]仅反汇编具有指定可见性的类型或成员。 下面是 vis 的有效值:

PUB - 公共

PRI - 私有

FAM - 系列

ASM - 程序集

FAA - 系列和程序集

FOA - 系列或程序集

PSC - 私有范围

有关这些可见性修饰符的定义,请参见 MethodAttributes 和 TypeAttributes

下列选项仅对用于文件或控制台输出的 .exe、.dll 和 .winmd 文件有效。

表 3
选项描述
/all指定 /header、/bytes、/stats、/classlist 和 /tokens 选项的组合。
/classlist包含模块中定义的类的列表。
/forward使用前向类声明。
/headers在输出中包含文件头信息。
/item: class[:: member[(sig]]根据所提供的自变量反汇编下列内容:

- 反汇编指定的 class。
- 反汇编类的指定 class 的 member。
- 反汇编具有指定签名 sig 的 class 的 member。 sig 的格式如下:
[instance] returnType(parameterType1, parameterType2, …, parameterTypeN)
请注意:在 .NET Framework 1.0 和 1.1 版中,sig 必须后跟右括号:(sig)。 自 .Net Framework 2.0 起,必须省略右括号:(sig。
/noil禁止显示 IL 程序集代码输出。
/stats包含映像的统计信息。
/typelist生成类型的完整列表,以便在往返过程中保留类型排序。
/unicode对输出使用 Unicode 编码。
/utf8对输出使用 UTF-8 编码。 ANSI 为默认值。

下列选项仅对用于文件或控制台输出的 .exe、.dll、.obj、.lib 和 .winmd 文件有效。

表 4
选项描述
/metadata[=specifier]显示元数据,其中 specifier 为:

MDHEADER - 显示元数据头信息和大小。

HEX - 以十六进制形式及文字形式显示信息。

CSV - 显示记录计数和堆大小。

UNREX - 显示无法解析的外部对象。

SCHEMA - 显示元数据头和架构信息。

RAW - 显示原始元数据表。

HEAPS - 显示原始堆。

VALIDATE - 验证元数据的一致性。

可多次指定 /metadata,并为 specifier 指定不同的值。

下列选项仅对用于文件或控制台输出的 .lib 文件有效。

表 5
选项描述
/objectfile=filename显示指定库中单个对象文件的元数据。

 备注

Ildasm.exe 的所有选项都不区分大小写,并且根据前三个字母识别。 例如,/quo 等效于 /quoteallnames。 指定参数的选项既可以用冒号 (:) 也可以用等号 (=) 作为选项和参数之间的分隔符。 例如,/output: filename 等效于 /output= filename。

备注

Ildasm.exe 只对磁盘上的 PE 文件进行操作。 它不对安装在全局程序集缓存中的文件进行操作。

Ildasm.exe 生成的文本文件可以用作 IL 汇编程序 (Ilasm.exe) 的输入。 这很有用,例如在编译用并非支持所有运行时元数据特性的编程语言编写的代码时。 通过 Ildasm.exe 编译代码并运行其输出后,可以手动编辑生成的 IL 文本文件以添加缺少的属性。 然后可以通过 IL 汇编程序运行此文本文件以生成最终可执行文件。

 备注

目前,无法对包含嵌入的本机代码的 PE 文件(例如,由 Visual C++ 生成的 PE 文件)使用此技术。

你可以使用 IL 反汇编程序中的默认 GUI 在分层树视图中查看任何现有 PE 文件的元数据和反汇编代码。 若要使用此 GUI,请在命令行中键入 ildasm,无需提供 PEfilename 参数或任何选项。 可从“文件”菜单导航到要加载到 Ildasm.exe 中的 PE 文件。 若要保存为选定 PE 显示的元数据和反汇编代码,请从“文件”菜单中选择“转储”命令。 若要仅保存分层树视图,请从“文件”菜单中选择“转储树视图”命令。 有关将文件加载到 Ildasm.exe 中和解释输出的详细指南,请参见 Windows SDK 附带的 Samples 文件夹中的 Ildasm.exe 教程。

如果为 Ildasm.exe 提供一个包含嵌入资源的 PEfilename 参数,则此工具生成多个输出文件:一个包含 IL 代码的文本文件,以及与每个嵌入的托管资源对应的 .resources 文件(使用该资源在元数据中的名称生成)。 如果 PEfilename 中嵌入了非托管资源,则通过 /output 选项使用 IL 输出指定的文件名生成 .res 文件。

 备注

Ildasm.exe 仅显示 .obj 和 .lib 输入文件的元数据说明。 不反汇编这些文件类型的 IL 代码。

可对 .exe 或 .dll 文件运行 Ildasm.exe 来确定该文件是否是托管的。 如果该文件不是托管的,则此工具将显示一条信息,说明该文件没有有效的公共语言运行时标头,并且无法反汇编。 如果该文件是托管的,则此工具将成功运行。

    关键字: Ildasm.exe IL 反汇编程序


鼓掌

0

正能量

0

0

呵呵

0


评论区