解析元数据

来源:互联网 发布:it域名注册 编辑:程序博客网 时间:2024/04/30 07:51

           问题:

                         1. 当我们运行一个应用程序时 (如 : Program.exe)时,它里面包含了什么?

                         2.当我们第一次去接触CLR的时候,我们听到的是 “元数据” ,那么它到底在哪里,它是什么呢 ?

                  

 

 

                                 一个托管 的 PE文件:  主要有四个部分构成 :{  PE32(+)头  , CLR头,元数据 以及 IL  }。

                                                                 1. PE32(+)头 : 是windows要求的标准信息。

                                                                 2. CRL头:是一个那些需要CLR的模块(托管模块)所特有的信息块 ,

                     在此信息块中包含(

                             模块在生成所面向CLR的major(主)和minor(次)版本号; 

                             一些标志(flag);

                             一个MethodDef token: 在这里面指定了模块的入口方法,但前提该模块必须是一个GUI                              或CUI的执行体;

                             还有一个可选的强名称数字签名 ;

                              及模块内部特定元数据表的大小和偏移量。 

                          

                             );

                 3. 元数据: 我试着回答第二问, 元数据其实就是一个二进制数据块,有几个表构成。

                     我们可以 把这几个一一分成三个分类:

                         定义表(definition table):

                         引用表(reference table);

                                                                                                   清单表(manifest  table):