PE文件的装载过程(4)

上周毕业答辩,没完成任务,惭愧惭愧。。。。

可选头的最后一部分是DataDirectory字段,这个字段包含了16个IMAGE_DATA_DIRECTORY结构,结构的定义如下:

IMAGE_DATA_DIRECTORY STRUCT
  VirtualAddress    DWORD      
?  ;数据的起始RVA
  isize               DWORD      
? ;数据块的长度
IMAGE_DATA_DIRECTORY ENDS

结构很简单,16个IMAGE_DATA_DIRECTORY代表的内容对应如下:

0

IMAGE_DIRECTORY_ENTRY_EXPORT

导出表

1

IMAGE_DIRECTORY_ENTRY_IMPORT

导入表

2

IMAGE_DIRECTORY_ENTRY_RESOURCE

资源

3

IMAGE_DIRECTORY_ENTRY_EXCEPTION

异常(具体资料不详)

4

IMAGE_DIRECTORY_ENTRY_SECURITY

安全(具体资料不详)

5

IMAGE_DIRECTORY_ENTRY_BASERELOC

重定位表

6

IMAGE_DIRECTORY_ENTRY_DEBUG

调试信息

7

IMAGE_DIRECTORY_ENTRY_ARCHITECTURE

版权信息

8

IMAGE_DIRECTORY_ENTRY_GLOBALPTR

具体资料不详

9

IMAGE_DIRECTORY_ENTRY_TLS

Thread Local Storage

10

IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG

具体资料不详

11

IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT

具体资料不详

12

IMAGE_DIRECTORY_ENTRY_IAT

导入函数地址表

13

IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT

具体资料不详

14

IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR

具体资料不详

15

未使用

其中重要的元素有索引值为0、1、5、12的四个,对应的意义如上表所示,在内存中寻找相应的节靠的就是以上的16个字段

到此,文件头结束,文件头在内存中的排列与在磁盘中的排列是一致的,在磁盘中的偏移是多少其在内存中的偏移就是多少。接着文件头的就是节表了,放在下一篇来说。

posted @ 2009-06-08 16:34  认真做人,认真做事  阅读(922)  评论(0编辑  收藏  举报