IL系列文章之二:Make Best Use of Our Tools

简介:
工欲善其事,必先利其器。这一节我谈的就是我们用于研究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!差不多了,就先写到这里吧。 













本文转自周金桥51CTO博客,原文链接:http://blog.51cto.com/zhoufoxcn/164407 ,如需转载请自行联系原作者





相关文章
|
编译器
LLVM每日谈之十九 LLVM的第一本系统的书&lt;Getting Started with LLVM Core Libraries&gt;
作者:史宁宁(snsn1984) LLVM终于有了一本系统的书了——《Getting Started with LLVM Core Libraries》。这本书号称是LLVM的第一本书,但是据说日本早就有两本日文的关于LLVM的书,这个了解的不多。
1041 0
|
编译器 C语言
ARM架构与编程(基于I.MX6ULL): keil_gcc_Makefile(八)(下)
ARM架构与编程(基于I.MX6ULL): keil_gcc_Makefile(八)
134 0
|
C语言
ARM架构与编程(基于I.MX6ULL): keil_gcc_Makefile(八)(中)
ARM架构与编程(基于I.MX6ULL): keil_gcc_Makefile(八)
135 0
|
IDE Linux 编译器
ARM架构与编程(基于I.MX6ULL): keil_gcc_Makefile(八)(上)
ARM架构与编程(基于I.MX6ULL): keil_gcc_Makefile(八)
418 1
ARM架构与编程(基于I.MX6ULL): keil_gcc_Makefile(八)(上)
|
Linux 开发工具 C语言
windows下使用vim(gVim)和gcc(MinGW):C/C++/Fortran/ObjC/Ada Compiler
windows下使用vim(gVim)和gcc(MinGW)像linux下一样编写c程序: linux下vim的功能超强大的文本编辑器;linux写C语言的使用gcc的; windows下能使用vim和gcc来开发C语言程序? 1. 准备vim这个编辑器。在windows下有一个很优秀的gVim文本编辑器,功能与linux的一样,而且更强大。 2. 准备gcc编译器。像C-Free支持的
4308 0
|
Linux
.pro文件QMAKE_LFLAGS += -lpthread等价于LIBS += -lpthread
.pro文件QMAKE_LFLAGS += -lpthread等价于LIBS += -lpthread
738 0
|
Windows
深入探究VC —— 编译器cl.exe(1)
cl.exe的功能是将源代码文件编译为可提供链接器使用的obj对象文件。cl.exe命令行参数形式如下: CL (option...) file... [option | file]... [lib...] [@command-file] [/link link-opt...] 各命令行参数的意义如下 : 1、option 命令行中的"option"是指一个或多个编译选项。
1131 0
|
编译器 C++
深入探究VC —— 编译器cl.exe(2)
这一章节介绍的全是VC编译器选项,option参数是cl.exe的编译选项,是cl.exe命令行参数中最复杂、也是最常用的。下面介绍一些常用的编译选项: 1、代码生成有关 这些选项将影响编译完成后生成的机器代码:     2、调试有关 与调试有关的编译选项如下图,/Z7、/Zi、/ZI这...
1259 0
|
Unix
Makefile学习之make 的运行【转】
转自:http://blog.csdn.net/suzilong11/article/details/7852830 ——————一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。
1043 0

热门文章

最新文章