一个托管PE文件包含4部分,PE表头 ,CLR表头,元数据和IL代码。

    PE表头是window操作系统要求的标准信息。

   CLR 表头专门用于那些需要CLR才能运行的模块(托管模块),CLR表头包含和模块一起创建的元数据的主版本号和次版本号,一些标记,如果模块是CUI或者GUI可执行文件还有一个表示入口点方法的MethodDef标记,以及一个可选的强命名数字签名。最后在表头中还包括模块内某些元数据表的大小和偏移量。可以通过查看CorHdr.h头文件定义的IMAGE_COR20_HEADER来得到CLR表头的准确格式。

     元数据其实就是一块二进制数据其中包含着一些表,可以将元数据表划分为3大类:定义表(ModuleDef,TypeDef,MethodDef,FieldDef,ParamDef,PropertyDef,EventDef),引用表(ModuleRef,AssebmlyRef,TypeDef,MemberRef),清单表(AssemblyDef ,FileDef,MainfestResourceDef,ExportedTypesDef)

。。摘自 《.Net框架程序设计》