IL 反汇编程序是 IL 汇编程序 (Ilasm.exe) 的配套工具。 Ildasm.exe 可利用包含中间语言 (IL) 代码的可移植可执行 (PE) 文件,并创建适合输入到 Ilasm.exe 的文本文件 。
此工具会自动随 Visual Studio 一起安装。 若要运行该工具,请使用 Visual Studio 开发人员命令提示或 Visual Studio 开发人员 PowerShell。
在命令提示符处,键入以下内容:
下列选项可用于 .exe、.dll、.obj、.lib 和 .winmd 文件 。
下列附加选项可用于 .exe、.dll 和 .winmd 文件 。
PUB - 公共
PRI - 私有
FAM - 系列
ASM - 程序集
FAA - 系列和程序集
FOA - 系列或程序集
PSC - 私有范围
有关这些可见性修饰符的定义,请参见 和 。
下列选项仅对用于文件或控制台输出的 .exe、.dll 和 .winmd 文件有效 。
- 对指定的 进行反汇编。
- 对 的指定的 进行反汇编。
- 对具有指定签名 的 的 进行反汇编。 的格式如下:
请注意:在 .NET Framework 1.0 和 1.1 版中, 必须后跟右括号:。 自 .Net Framework 2.0 起,必须省略右括号:。
/noil 禁止显示 IL 程序集代码输出。 /stats 包含映像的统计信息。 /typelist 生成类型的完整列表,以便在往返过程中保留类型排序。 /unicode 对输出使用 Unicode 编码。 /utf8 对输出使用 UTF-8 编码。 ANSI 为默认值。
下列选项仅对用于文件或控制台输出的 .exe、.dll、.obj、.lib 和 .winmd 文件有效 。
MDHEADER - 显示元数据头信息和大小。
HEX - 以十六进制形式及文字形式显示信息。
CSV - 显示记录计数和堆大小。
UNREX - 显示无法解析的外部对象。
SCHEMA - 显示元数据头和架构信息。
RAW - 显示原始元数据表。
HEAPS - 显示原始堆。
VALIDATE - 验证元数据的一致性。
可多次指定 /metadata,并为 指定不同的值。
下列选项仅对用于文件或控制台输出的 .lib 文件有效。
Ildasm.exe 只对磁盘上的 PE 文件进行操作。 它不对安装在全局程序集缓存中的文件进行操作。
Ildasm.exe 生成的文本文件可以用作 IL 汇编程序 (Ilasm.exe) 的输入 。 这很有用,例如在编译用并非支持所有运行时元数据特性的编程语言编写的代码时。 通过 Ildasm.exe 编译代码并运行其输出后,可以手动编辑生成的 IL 文本文件以添加缺少的属性。 然后可以通过 IL 汇编程序运行此文本文件以生成最终可执行文件。
你可以使用 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 文件。
可对 .exe 或 .dll 文件运行 Ildasm.exe 来确定该文件是否是托管的 。 如果该文件不是托管的,则此工具将显示一条信息,说明该文件没有有效的公共语言运行时标头,并且无法反汇编。 如果该文件是托管的,则此工具将成功运行。
从 .NET Framework 4.5 开始,Ildasm.exe 将通过显示原始二进制内容来处理无法识别的封送 BLOB(二进制大型对象)。 例如,下面的代码演示 C# 程序生成的封送 BLOB 如何显示:
从 .NET Framework 4.5 开始,Ildasm.exe 将显示应用于接口实现的属性,如下方 Ildasm.exe 输出摘录所示:
下面的命令使 PE 文件 的元数据和反汇编代码显示在 Ildasm.exe 的默认 GUI 中。
下面的命令对 文件进行反汇编,并将生成的 IL 汇编程序文本存储在 MyFile.il 文件中。
下面的命令对 文件进行反汇编,并将结果 IL 汇编程序文本显示到控制台窗口中。
如果文件 包含嵌入的托管和非托管资源,则下面的命令将生成 4 个文件:MyApp.il、MyApp.res、Icons.resources 和 Message.resources :
下面的命令对 的 类中的 方法进行反汇编,并将输出显示到控制台窗口中。
在上面的示例中,可能有几个具有不同签名的名为 的方法。 下面的命令对返回类型为 void 且参数类型为 int32 和 string 的 实例方法进行反汇编 。
若要检索 方法(在 Visual Basic 中为 方法),则省略关键字 。 不属于基元类型(例如 和 )的类类型必须包括命名空间并且必须在前面加上关键字 。 外部类型的前面必须是用方括号括起来的库名称。 下面的命令对名为 的静态方法进行反汇编,该方法具有一个 类型的参数且其返回类型为 。
嵌套类型的前面必须是包含它的类,并用正斜杠进行分隔。 例如,如果 类包含名为 的嵌套类,则按如下方式标识该嵌套类:。
- 工具
- Ilasm.exe(IL 汇编程序)
- 托管执行过程
- 开发人员命令行 shell
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/50052.html