上周毕业答辩,没完成任务,惭愧惭愧。。。。
可选头的最后一部分是DataDirectory字段,这个字段包含了16个IMAGE_DATA_DIRECTORY结构,结构的定义如下:
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个字段
到此,文件头结束,文件头在内存中的排列与在磁盘中的排列是一致的,在磁盘中的偏移是多少其在内存中的偏移就是多少。接着文件头的就是节表了,放在下一篇来说。