上周毕业答辩,没完成任务,惭愧惭愧。。。。
可选头的最后一部分是DataDirectory字段,这个字段包含了16个IMAGE_DATA_DIRECTORY结构,结构的定义如下:





结构很简单,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个字段
到此,文件头结束,文件头在内存中的排列与在磁盘中的排列是一致的,在磁盘中的偏移是多少其在内存中的偏移就是多少。接着文件头的就是节表了,放在下一篇来说。