WEB开发网
开发学院网络安全黑客技术 PE文件格式(2) 阅读

PE文件格式(2)

 2007-01-14 20:15:04 来源:WEB开发网   
核心提示: IMAGE_EXPORT_DIRECTORYSTRUCTCharacteristicsDWORD?TimeDateStampDWORD?MajorVersionWORD?MinorVersionWORD?nNameDWORD?nBaseDWORD?NumberOfFunctionsDWOR
IMAGE_EXPORT_DIRECTORYSTRUCT
 Characteristics     DWORD   ?
 TimeDateStamp      DWORD   ?
 MajorVersion       WORD   ?
 MinorVersion       WORD   ?
 nName          DWORD   ?
 nBase          DWORD   ?
 NumberOfFunctions    DWORD   ?
 NumberOfNames      DWORD   ?
 AddressOfFunctions    DWORD   ?
 AddressOfNames      DWORD   ?
 AddressOfNameOrdinals  DWORD   ?
IMAGE_EXPORT_DIRECTORYENDS

输出表结构('IMAGE_EXPORT_DIRECTORY')包含一个头和输出数据,即符号名,序号及到入口点的偏移。

首先,是一个32位的'Characteristics',一般为0。然后是32位的'TimeDateStamp',输出表创建的时间,并非总是有效的,有些链接器置0。然后是2个16位的版本信息MajorVersion和MinorVersion,一般置0.

下面是32位的'Name',这是一个指向以0结尾的字符串的RVA,名字是必须的,防止DLL文件改名。

然后是32位的'Base'.下一个是32位的输出项目总数'NumberOfFunctions'.除了序数外,也可能以名字输出。下面一个是32位的输出名字的总数'NumberOfNames'.在多数情况,每个输出项有一个确切的名字,将以名字使用它。但一个项目可能有多个名字,或者没有名字,这种情况只能够以序号来访问,不赞成只以序号输出,带来维护问题。

下面32位是AddressOfFunctions,是输出项目列表的RVA,它指向具有'NumberOfFunctions'个数元素的数组。每个成员是输出函数或变量的RVA。该列表有两个怪事,输出的RVA可能是0,他没有被使用。第二如果RVA指向包含输出目录的节,这是一个转发输出。转发输出是一个指向另一个文件输出的指针。这样就使用另一个文件内的被指向的输出。输出序号是AddressOfFunctions数组的索引+上面提到的BASE值。多数情况下,'Base'=1,意思是第一个输出的序号为1,第二个是2。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:PE 文件 格式

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