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

原创 2003年02月26日 08:47:00

IL系列文章之二:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Make Best Use of Our Tools

工欲善其事,必先利其器。这一节我谈的就是我们用于研究IL的工具。

第一篇文章贴出来之后,网上有朋友问我“能不能看到c#程序的IL代码?”。看来还有些朋友对IL的编译与反编译还不太熟悉,所以我个人认为写一篇关于工具的文章还是有必要的。我们的工具主要有三个,第一个是dumpbin,可以把exe,obj,dllbump出来然我们它们的PE结构,关于PE结构的讨论前一段时间比较热,网络上杂志上都有很多资料。(如果你先麻烦懒得去找的话,那你就等着什么时候我也来写一篇吧J)。另外两个是ilasmildasm,上次的文章中我们已经提到过了,分别是IL的编译器和反编译器。dumpbin, ilasm的说明已经比较详细了。你可以启动Visual Studio .NET命令提示,键入“dumpbin /?”,“ilasm /?”或“ildasm /?”,Enter,就可以看到在三个应用程序的命令行帮助了。更为详细的MSDN资料如下:

dumpbinms-help://MS.VSCC/MS.MSDNVS.2052/vccore/html/_core_dumpbin_reference.htm

ilasmms-help://MS.VSCC/MS.MSDNVS.2052/cptools/html/cpconmsilassemblerilasmexe.htm

ildasmms-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!差不多了,就先写到这里吧。

2014西安网络赛1009||hdu5015 矩阵

http://acm.hdu.edu.cn/showproblem.php?pid=5015 Problem Description In our daily life we ofte...
  • u013573047
  • u013573047
  • 2014年09月15日 09:15
  • 635

机器学习入门系列之二---线性回归算法学习

线性回归算法学习还是使用系列一监督算法中涉及的案例(房价分析),那么我们如何使用线性回归算法呢?   首先我们要开始算法初始化设置工作:   设置算法训练数据集 (人工标注的正确答案数据设置) 算法...
  • firehadoop
  • firehadoop
  • 2017年04月09日 17:33
  • 322

233 Matrix(矩阵快速幂)

233 Matrix Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tota...
  • jxust_tj
  • jxust_tj
  • 2015年09月08日 20:59
  • 429

HDU 2045 不容易系列之(3)—— LELE的RPG难题 (组合数学)

递推:f(n)=f(n-1)+2*f(n-2) 证明:考虑长为n的串。若前n-1位组成的串合法,则由于首尾不同,再添加一位时,只有1种颜色可选;若前n-1位组成的串不合法(首尾相同),那么前n-2位组...
  • synapse7
  • synapse7
  • 2013年11月01日 21:20
  • 1718

【Kafka源码】处理请求

一KafkaRequestHandlerPool 二KafkaApishandle 1 ApiKeys枚举类 三Request数据结构 1 requestId 2 header 3 body 在Kaf...
  • nuaazhaofeng
  • nuaazhaofeng
  • 2017年11月15日 10:42
  • 99

ubuntu16.04安装caffe遇到一些问题

make过程遇到问题PROTOC src/caffe/proto/caffe.proto CXX src/caffe/syncedmem.cpp CXX src/caffe/layer.cpp CXX...
  • FogXcG
  • FogXcG
  • 2017年07月18日 23:59
  • 579

caffe安装过程中碰到的一些问题以及解决方案

最近一直在使用caffe,把自己安装以及使用过程中碰到的问题做个记录: convert_imageset.cpp:(.text.startup+0x5e1):对‘caffe::db::GetDB(st...
  • kc171154
  • kc171154
  • 2015年10月26日 12:25
  • 13384

HDU 2045 不容易系列之(3)—— LELE的RPG难题

不容易系列之(3)—— LELE的RPG难题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O...
  • a237653639
  • a237653639
  • 2015年06月08日 12:46
  • 829

使用autotools工具用configure、make、make install编译安装linux工程的详细步骤

autotools是个系列工具,主要由autoconf、automake、perl语言环境和m4等组成,所包含的命令有5个: 下图是autotools使用的流程图: ...
  • tmxkwzy
  • tmxkwzy
  • 2016年11月24日 10:20
  • 1715

windows sdk编程系列文章 ---- 多文档界面

http://hi.baidu.com/combojiang/item/0e4b7080dfe014efe496e00e 本教程告诉你怎样创建MDI应用程序.事实上并不是很困难. 理论: 多文档...
  • kidoom
  • kidoom
  • 2013年05月21日 13:51
  • 363
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IL系列文章之二:Make Best Use of Our Tools
举报原因:
原因补充:

(最多只允许输入30个字)