WEB开发网
开发学院软件开发VC PE文件格式详解(下) 阅读

PE文件格式详解(下)

 2006-07-20 11:43:35 来源:WEB开发网   
核心提示: .rdata段表示只读的数据,比如字符串文字量、常量和调试目录信息,PE文件格式详解(下)(2),所有其它变量(除了出现在栈上的自动变量)存储在.data段之中,基本上,或者一种资源名称,或者一个资源的语言ID,这些是应用程序或模块的全局变量,资源段

.rdata段表示只读的数据,比如字符串文字量、常量和调试目录信息。

所有其它变量(除了出现在栈上的自动变量)存储在.data段之中。基本上,这些是应用程序或模块的全局变量。

资源段,.rsrc

.rsrc段包含了模块的资源信息。它起始于一个资源目录结构,这个结构就像其它大多数结构一样,但是它的数据被更进一步地组织在了一棵资源树之中。以下的IMAGE_RESOURCE_DIRECTORY结构形成了这棵树的根和各个结点。 //WINNT.H
typedef struct _IMAGE_RESOURCE_DIRECTORY {
 ULONG Characteristics;
 ULONG TimeDateStamp;
 USHORT MajorVersion;
 USHORT MinorVersion;
 USHORT NumberOfNamedEntries;
 USHORT NumberOfIdEntries;
} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;
  
请看这个目录结构,你将会发现其中竟然没有指向下一个结点的指针。但是,在这个结构中有两个域NumberOfNamedEntries和NumberOfIdEntries代替了指针,它们被用来表示这个目录附有多少入口。附带说一句,我的意思是目录入口就在段数据之中的目录后边。有名称的入口按字母升序出现,再往后是按数值升序排列的ID入口。

一个目录入口由两个域组成,正如下面IMAGE_RESOURCE_DIRECTORY_ENTRY结构所描述的那样: // WINNT.H
typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
 ULONG Name;
 ULONG OffsetToData;
} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY;
根据树的层级不同,这两个域也就有着不同的用途。Name域被用于标识一个资源种类,或者一种资源名称,或者一个资源的语言ID。OffsetToData与常常被用来在树之中指向兄弟结点——即一个目录结点或一个叶子结点。

上一页  1 2 3 4 5 6 7  下一页

Tags:PE 文件 格式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接