首页 > 健康养生

ILdasm 的使用方法

健康养生 2023-09-05 01:02:02
生活中有许多朋友问小编ILdasm,那么今天小编就为大家解决一下这个问题,希望对你有所帮助。

ILdasm 的使用方法

有了这个工具,我们可以打开任何。net可执行文件(exe或dll)并查看其MSIL代码。Ildasm.exe下载地址。/softs/73291.html我们来看看怎么用:

1.在VS2008中创建新的Windows窗体应用程序,并输入以下代码以生成解决方案:

复制代码代码如下:

private void Form1_Load(对象发送方,EventArgs e){ int I = 0;I = i++;MessageBox。show(I . ToString());}

2.运行ildasm,打开新生成的exe文件,可以看到以下内容:

3.双击“form1 _ load: void (object,class [mscorlib] system。eventargs)"在ildasm中查看上面代码中的MSIL代码:

复制代码代码如下:

。方法私有hidebysig实例void Form1_Load(对象发送方,类[mscorlib] system。eventargse)cil managed {//code size 22(0x 16). maxstack 3 . locals init([0]int 32 I)IL _ 0000:LDC . I 4.0 IL _ 0001:stloc . 0 IL _ 0002:ldloc . 0 IL _ 0003:dup IL _ 0004:LDC . I 4.1 IL _ 0005:add IL _ 0006:stloc . 0 IL _ 0007:stloc . 0 IL _ 0008Int32::ToString() IL_000f:调用valuetype [System。Windows.Forms]系统。windows . forms . dialog result[System。windows . Forms]系统。windows . forms . messagebox::Show(string)IL _ 0014:pop IL _ 0015:ret }//方法结束Form1::Form1_Load

附:将ildasm集成到VS2008的方法:

在VS2008菜单中选择“工具→外部工具”,点击添加按钮,在标题中输入ILdasm,在命令中输入c:/program files/Microsoft sdks/Windows/v 6.0a/bin/ildasm . exe。确认后可以在工具菜单中找到ILdasm,以后可以选择。

MSIL汇编程序(Ilasm.exe)和MSIL反汇编程序(Ildasm.exe)

我们先解释一下下面要提到的一些名词:

PE文件:可移植的可执行文件。为公共语言运行库编译程序时,程序被转换为由三部分组成的PE文件:PE头、MSIL指令和元数据。

MSIL:微软中间语言。这是一组可以有效地转换成本机代码并且独立于CPU的指令。MSIL包括用于加载、存储和初始化对象以及对对象调用方法的指令,以及用于算术和逻辑运算、控制流、直接内存访问、异常处理和其他操作的指令。

MSIL反汇编程序是MSIL汇编程序(Ilasm.exe)的配套工具。Ilasm.exe采用了包含微软中间语言(MSIL)代码的可移植可执行(PE)文件,并创建了相应的文本文件作为Ilasm.exe的输入。

我们以SampleClass为例来解释一下它们的用法。

Ildasm.exe MSIL拆装器

以下命令使PE文件SampleClass.exe的元数据和反汇编代码显示在Ildasm.exe的默认GUI中。ildasm SampleClass.il的以下命令反汇编SampleClass.exe文件,并将生成的MSIL汇编程序文本存储在SampleClass.il文件中。

e:/test & gt;ildasm SampleClass.exe/output:sample class . il//警告:创建了Win32资源文件SampleClass.res

以下命令反汇编SampleClass.exe文件,并在控制台窗口中显示生成的MSIL汇编程序文本。

e:/test & gt;伊尔达斯姆·SampleClass.exe/text

如果文件SampleClass.exe包含嵌入的托管和非托管资源,以下命令将生成以下四个文件:SampleClass.il、SampleClass.res、Icons.resources和Message.resources:

ildasm SampleClass.exe/输出:SampleClass.il

以下命令反汇编SampleClass.exe的SampleClass类中的DataClass方法,并在控制台窗口中显示输出。

ildasm/item:sample class::data class SampleClass.exe/text

参数列表:

以下选项可用于。exe,。dll,。obj和。lib文件。

/output:filename 创建具有指定 filename 的输出文件,而不是在对话框中显示结果。 /text 将结果显示到控制台窗口,而不是显示在对话框中或显示为输出文件。 /? 显示此工具的命令语法和选项。

以下附加选项可用于。exe和。dll文件。

/bytes 以十六进制格式显示作为指令注释的实际字节。 /linenum 包含对原始源行的引用。 /nobar 取消反汇编进度指示器弹出窗口的显示。 /pubonly 只反汇编公共类型和公共成员。等效于 /visibility:PUB。 /quoteallnames 在单引号中包含所有名称。 /raweh 以原始格式显示异常处理子句。 /source 显示作为注释的原始源行。 /tokens 显示类和成员的元数据标记。 /visibility:vis [+vis ...] 只反汇编具有指定可见性的类型或成员。以下是 vis 的有效值。 PUB Public PRI Private FAM Family ASM Assembly FAA Family 和 Assembly FOA Family 或 Assembly PSC Private Scope

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

/all 指定 /header、/bytes 和 /tokens 选项的组合。 /header 在输出中包含文件头信息。 /noil 取消 MSIL 程序集代码输出。 /unicode 对输出使用 Unicode 编码。 /utf8 对输出使用 UTF-8 编码。默认值是 ANSI。

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

/item:class[::method [(sig)]] 根据所提供的参数反汇编下列内容:

反汇编指定的类。反汇编类的指定方法。反汇编具有指定签名的类的方法。指定一个带有返回类型和任意多个参数的签名。例如,returntype (param1,param2,...paramn)。Ilasm.exe MSIL装配工公司

以下命令汇编SampleClass.il的MSIL文件SampleClass.il并生成可执行文件。

e:/test & gt;ilasm示例类

微软。NET Framework IL汇编程序。版本1.1.4322.2032版权所有(C)微软公司1998-2002。保留所有权利。组装和装配;apos样本类。IL & ampapos,没有列表文件,到EXE-& gt;& ampapos样本类。EX源文件是ANSI

汇编方法数据类::。ctor组装方法DataClass::addem组装方法SampleClass::。ctor汇编方法SampleClass::Main创建PE文件

发射成员:全局一级字段:2;方法:2;2类字段:2;方法:2;解析成员引用:11-& gt;11 defs,0 refs写入PE文件操作成功完成

以下命令汇编MSIL文件SampleClass.il并生成。dll文件SampleClass.dll。

e:/test & gt;ilasm SampleClass /dll

微软。NET Framework IL汇编程序。版本1.1.4322.2032版权所有(C)微软公司1998-2002。保留所有权利。组装和装配;apos样本类。IL & ampapos,没有列表文件,到DLL-& gt;& ampapos样本类。DLL & ampapos源文件是ANSI

汇编方法数据类::。ctor组装方法DataClass::addem组装方法SampleClass::。ctor汇编方法SampleClass::Main创建PE文件

发射成员:全局一级字段:2;方法:2;2类字段:2;方法:2;解析成员引用:11-& gt;11 defs,0 refs写入PE文件操作成功完成

以下命令汇编MSIL文件SampleClass.il并生成。dll文件SampleClass.dll。

ilasm sample class/dll/output:new sample class . dll

参数列表:

/alignment=integer 将 FileAlignment 设置为由 NT Optional 标题中的 integer 指定的值。如果在文件中指定了 .alignment IL 指令,则此选项将重写它。 /base=integer 将 ImageBase 设置为由 NT Optional 标题中的 integer 指定的值。如果在文件指定了 .imagebase IL 指令,则此选项将重写它。 /clock 为指定的 .il 源文件测量并报告下列编译时间(以毫秒为单位): 总运行时间 执行后面的所有特定操作所花费的总时间。 启动 加载并打开文件。 分析

问题MD问题元数据。定义引用解析解析文件中对定义的引用。修订和链接

CEE文件生成会在内存中生成文件映像。PE文件写入将图像写入PE文件。/debug包含调试信息(局部变量名、参数名和行号)。/dll生成一个. dll文件作为输出。/exe生成可执行文件作为输出。这是默认值。/flags=integer将ImageFlags设置为由公共语言运行库标头中的integer指定的值。如果。文件中指定了corflags IL指令,此选项将覆盖它。有关integer有效值的列表,请参见CorHdr.h中的COMIMAGE_FLAGS。/key:keyFile使用keyFile中包含的私钥编译带有强签名的文件名。/key:@keySource使用keySource中生成的私钥编译带有强签名的文件名。/listing在标准输出中生成列表文件。如果省略此选项,则不会生成列表文件。/nolog取消Microsoft启动标题。/output:file.ext指定输出文件名和扩展名。默认情况下,输出文件名与第一个源文件名相同。默认扩展名是。exe。如果指定/dll选项,默认扩展名为。dll。

请注意,指定/output:myfile.dll不会设置/dll选项。如果没有指定/dll,将生成一个名为myfile.dll的可执行文件。

/quiet 指定安静模式;不报告程序集进度。 /resource:file.res 在生成的 .exe 或 .dll 文件中包括 *.res 格式的指定资源文件。使用 /resource 选项只能指定一个 .res 文件。 /subsystem=integer 将 subsystem 设置为由 NT Optional 标题中的 integer 指定的值。如果在文件中指定了 .subsystem IL 指令,则此命令将重写它。有关 integer 的有效值的列表,请参见 winnt.h 中的 IMAGE_SUBSYSTEM。 /? 显示此工具的命令语法和选项。

标签: 方法   使用

生活百科 饮食百科 健康养生 美容减肥 自然百科 科普大全 文化常识
Copyright 百科网 备案号:冀ICP备2022029337号-3本站图文信息均来自于网络收集,仅供大家参考,不作为医疗诊断依据。
统计代码