当前位置:网站首页 > 编程语言 > 正文

反编译exe(反编译exe文件)



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

此工具会自动随 Visual Studio 一起安装。 若要运行该工具,请使用 Visual Studio 开发人员命令提示或 Visual Studio 开发人员 PowerShell。

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

 
  

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

选项 说明 /out= 创建具有指定 的输出文件,而不是在图形用户界面中显示结果。 /rtf 以 RTF 格式生成输出。 与 /text 选项一起使用时无效。 /text 将结果显示到控制台 窗口,而不是显示在图形用户界面中或显示为输出文件。 /html 以 HTML 格式生成输出。 与 /output 选项一起使用时才有效。 %> 显示此工具的命令语法和选项。

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

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

PUB - 公共

PRI - 私有

FAM - 系列

ASM - 程序集

FAA - 系列和程序集

FOA - 系列或程序集

PSC - 私有范围

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















































































































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

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

- 对指定的 进行反汇编。
- 对 的指定的 进行反汇编。
- 对具有指定签名 的 的 进行反汇编。 的格式如下:

请注意:在 .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 文件有效 。

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

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

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

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

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

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

RAW - 显示原始元数据表。

HEAPS - 显示原始堆。

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

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





























































































































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

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

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
到此这篇反编译exe(反编译exe文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 来自远方合集百度云(来自远方 百度云)2026-05-04 14:36:06
  • 蓝牙耳机怎么断开连接连另一个手机苹果(苹果蓝牙耳机如何断开其他绑定手机)2026-05-04 14:36:06
  • 什么叫动态库(什么是动态库)2026-05-04 14:36:06
  • m301h刷安卓系统9(m301h刷机包下载)2026-05-04 14:36:06
  • ubuntu更新源的命令(ubuntu更新源命令出现错误)2026-05-04 14:36:06
  • 幼儿游戏的分类(幼儿游戏的分类思维导图)2026-05-04 14:36:06
  • oven(oven怎么读)2026-05-04 14:36:06
  • qq怎么扫描二维码登录腾讯视频(qq怎么扫描二维码登录腾讯视频会员)2026-05-04 14:36:06
  • 预训练适应仪好使吗(预适应训练仪哪个厂家的好?)2026-05-04 14:36:06
  • 一年级数学看图圈一圈填一填(一年级数学题看图圈一圈)2026-05-04 14:36:06
  • 全屏图片