工欲善其事,必先利其器。这一节我谈的就是我们用于研究IL的工具。
第一篇文章贴出来之后,网上有朋友问我“能不能看到c#程序的IL代码?”。看来还有些朋友对IL的编译与反编译还不太熟悉,所以我个人认为写一篇关于工具的文章还是有必要的。我们的工具主要有三个,第一个是dumpbin,可以把exe,obj,dll等bump出来然我们它们的PE结构,关于PE结构的讨论前一段时间比较热,网络上杂志上都有很多资料。(如果你先麻烦懒得去找的话,那你就等着什么时候我也来写一篇吧J)。另外两个是ilasm和ildasm,上次的文章中我们已经提到过了,分别是IL的编译器和反编译器。dumpbin, ilasm的说明已经比较详细了。你可以启动Visual Studio .NET命令提示,键入“dumpbin /?”,“ilasm /?”或“ildasm /?”,Enter,就可以看到在三个应用程序的命令行帮助了。更为详细的MSDN资料如下:
dumpbin:ms-help://MS.VSCC/MS.MSDNVS.2052/vccore/html/_core_dumpbin_reference.htm
ilasm:ms-help://MS.VSCC/MS.MSDNVS.2052/cptools/html/cpconmsilassemblerilasmexe.htm
ildasm:ms-help://MS.VSCC/MS.MSDNVS.2052/cptools/html/cpconmsildisassemblerildasmexe.htm
(不过你要安装了Visual Studio.NET整合的MSDN才能看到。)
这些我都不想再说了,自己去看吧。我下面要讲的是一个不太容易被人们发现的东西——ildasm的高级选项。
你在Visual Studio .NET命令提示下输入“ildasm /?”看看有什么东西,然后在输入“ildasm /ADV /?”再看看多了什么东西(ADV就是Advanced的意思)。我们第一个输入下是看不到ADV选项的,在第二个输入下我们看到了多出了几个高级选项。这些高级选项对于那些以.net平台为目标的工具开发者很有益处。
可供选择的命令行高级参数如下:
/ADV 以高级方式启动ildasm,在你启动ildasm后“视图”菜单中会出现一些高级选项。如果你是想使用命令行的方式进行反编译的话,“/ADV”必须写在其它选项前面前面,如“/ADV /CLASSLIST”等。
/STATS 显示镜像文件(你就把它理解为被你反编译的文件好了)的统计信息。
/CLASSLIST 包括本模块中定义的类的列表。
/ALL 包括 /HEADER, /BYTES, /STATS, /CLASSLIST, /TOKENS。
/METADATA[=<specifier>] 显示<specifier>所指定的MetaData,<specifier>包括:
MDHEADER 显示MetaData header包含的信息和大小。
HEX 显示更多十六进制表示的内容。
CSV 以逗号分隔的形式显示header的大小。(这里我没搞太懂L。)
UNREX 显示无法分析的外部对象。
VALIDATE 对metadata的一致性进行验证。(对于metadata我以后会有文章介绍。)
OK!差不多了,就先写到这里吧。
分享到:
相关推荐
how to get a readable and programmable result from the IL array provided by the MethodBody.GetILAsByteArray() method.
1. 高精度:由于采用了精确的时间-of-flight(飞行时间)测量技术,IL系列传感器可以达到微米级别的位移测量精度。 2. 宽量程:根据不同的型号,IL系列传感器可以测量几毫米至几米的距离,适应不同应用需求。 3. 抗...
标题 "IL 格式不正确Bad IL Format" 描述了一个常见的编程问题,通常与.NET框架中的中间语言(IL,Intermediate Language)相关。当开发者遇到这个错误时,这意味着编译后的.NET程序集(如.dll或.exe文件)包含的IL...
C#_IL介绍 IL(Intermediate Language),全称为中间语言,是.NET框架中的一部分,它在C#等.NET编程语言编译后的代码形式。IL是一种与平台无关的指令集,它的存在使得.NET应用程序可以在多种操作系统和硬件平台上...
【IL代码详解】 IL,全称为中间语言(Intermediate Language),是.NET框架中的一种低级抽象指令集。当我们在.NET环境中编写源代码(如C#、VB.NET等)时,编译器会将其编译成IL代码,而不是直接生成可执行的机器码...
IL(Intermediate Language)是.NET框架的核心组成部分之一,它是.NET程序在编译后的通用表示形式。IL代码是一种低级但平台无关的指令集,类似于Java字节码。开发者可以使用IL来查看和理解.NET程序的内部工作原理,...
Best Http 1.7.8 解决IL2CPP 64位问题包,解决使用64位发布IL2CPP部分http错误问题升级包;
本篇文章将深入探讨il2cpp的基本原理、其在Mac平台上的应用以及如何进行“一键dump”。 **一、il2cpp简介** il2cpp,全称为Intermediate Language to C++,是Unity引擎用于将C#代码转换为C++的工具。它的主要目的...
"基恩士CMOS 激光位移传感器IL系列说明书" 基恩士CMOS 激光位移传感器IL系列是一种高精度的激光位移传感器,能够检测目标物的位置变化,输出精度高达1μm的位移量测定结果。该系列传感器采用三角测量原理,通过检测...
《C# to IL》这本书是面向对C#编程语言有一定基础,并希望深入理解其底层运行机制的开发者所准备的一份宝贵资源。IL,全称Intermediate Language,是.NET框架中的中间语言,是C#等高级语言编译后的产物,它介于源...
在Unity3D的编译过程中,C#代码首先会被编译成MSIL(Microsoft Intermediate Language),然后IL2CPP会将这些MSIL指令转换为C++,这个过程称为AOT( Ahead-of-Time Compilation)。这样做的好处在于,生成的C++代码...
CHAPTER 19:System Programming Il:Process Management and Signal Processing CHAPTER 20:System Programming ll:Interprocess Communication CHAPTER 21:System Programming IV:Practical Considerations CHAPTER ...
《Expert .NET 2.0 IL Assembler》一书由Serge Lidin撰写,深入探讨了.NET 2.0框架下的内部运作机制,特别是聚焦于公共语言运行时(Common Language Runtime,CLR)及其自身的语言——中间语言(Intermediate ...
IL(中间语言)是.NET Framework中的一个关键技术,它是一种平台无关、语言无关的二进制格式。当.NET应用程序被编译时,无论是C#、VB.NET还是其他.NET兼容的语言,源代码都会首先被编译成IL代码。这是因为IL代码是...
But all .NET developers use the IL Disassembler (ILDASM) now and then, and many use it on a regular basis. A cyan thunderbolt—the ILDASM icon (a silent praise for David Drake)—glows on the computer...
Il2CppDumper是一款针对Unity游戏引擎的反编译工具,主要用于分析和提取Il2Cpp格式的游戏二进制代码。Il2Cpp(Intermediate Language to C++)是Unity引擎用于提高性能和安全性的技术,它将.NET的IL代码转换为C++,...
MicroRNAs:IL-22的新型调控分子,陆舟,刘荣花,IL-22是IL-10家族的成员。机体内,Th22,Th1,Th17,NK22,NKT, ILCs 和γδ T细胞都能分泌IL-22。IL-22通过与其受体复合物结合发挥功能,它的受体复合�
1. **IL基础知识**:IL是一种低级的、平台无关的指令集,它是.NET Common Language Runtime (CLR) 执行的二进制代码。IL提供了诸如运算符、控制流、类型系统和方法调用等基础构建块。 2. **CIL(Common ...
IL库提供了一系列函数来加载、保存和操作图像,支持多种文件格式,如BMP、JPEG、PNG、TGA等。它也提供了色彩空间转换、图像翻转、裁剪等功能。 2. **il_wrap.h**: 这个文件可能包含IL库中用于图像处理的边界处理或...
1. **指令集**:IL包含一系列的指令,如ldc(加载常量)、add(加法运算)、call(调用方法)等,这些指令对应着程序的基本操作。 2. **元数据**:IL代码伴随着丰富的元数据,这些信息描述了类型、字段、方法、属性...