- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pe文件格式解析
.NET MF pe文件规范
.NET MF Platform, Version 1.0.0
MiniCLR Team
2010-11-20
简 介
.NET MF是 .NET Micro Framework的缩写,它定义了一整套的基于.NET语言的嵌入式执行环境。包括TinyCLR和pe文件格式。
.NET MF 的pe文件格式不同于PC端的PE文件格式,它是经过.NET MF的编译器压缩后的可以在.NET MF的虚拟机中执行的一种嵌入式的pe可执行文件。
pe的文件格式基于PC端元数据表构建。基本上囊括了运行时的数据结构,在IL代码的TOKEN等地方,做了优化。用以满足嵌入式系统苛刻的硬件环境。
基本数据类型、结构
平台相关的一些基本数据类型
typedef unsigned char CLR_UINT8;
typedef unsigned short CLR_UINT16;
typedef unsigned int CLR_UINT32;
typedef unsigned __int64 CLR_UINT64;
typedef signed char CLR_INT8;
typedef signed short CLR_INT16;
typedef signed int CLR_INT32;
typedef signed __int64 CLR_INT64;
typedef CLR_UINT16 CLR_OFFSET;
typedef CLR_UINT32 CLR_OFFSET_LONG;
typedef CLR_UINT16 CLR_IDX;
typedef CLR_UINT16 CLR_STRING;
typedef CLR_UINT16 CLR_SIG;
typedef const CLR_UINT8* CLR_PMETADATA;
注:
CLR_UINT32 : .NET MF定义为在32位的ARM等平台运行的,所以int为32位,如果移植到16位处理器上,int为16位。
CLR_STRING : .NET MF为了节约空间,将一些域常用的字符串放在一个全局的数组里(对mscorlib.dll等都有效)。将程序集可以共享的字符串放在TBL_Strings里。16BIT的空间分成0~0x7FFF 和 0x8000~0xFFFF。
0~0x7FFF为偏移,0x8000~0xFFFF为序号。
元数据表
enum CLR_TABLESENUM
{
TBL_AssemblyRef = 0
TBL_TypeRef = 0
TBL_FieldRef = 0
TBL_MethodRef = 0
TBL_TypeDef = 0
TBL_FieldDef = 0
TBL_MethodDef = 0
TBL_Attributes = 0
TBL_TypeSpec = 0
TBL_Resources = 0
TBL_ResourcesData = 0x0000000A,
TBL_Strings = 0x0000000B,
TBL_Signatures = 0x0000000C,
TBL_ByteCode = 0x0000000D,
TBL_ResourcesFiles = 0x0000000E,
TBL_EndOfAssembly = 0x0000000F,
TBL_Max = 0
};
上述枚举少了一个很重要的表 TBL_Assembly , 这个表作为pe的头用来描述一些重要的结构。
元数据表项
struct CLR_RECORD_VERSION
{
CLR_UINT16 iMajorVersion;
CLR_UINT16 iMinorVersion;
CLR_UINT16 iBuildNumber;
文档评论(0)