PE文件格式(1)
2007-01-14 20:15:09 来源:WEB开发网预留数量是地址空间不是真实的RAM,程序启动时,提交的数量是真正的分配的内存。这个值也是堆和栈根据需要增长的一个数量。
例如:一个程序预留1MB的堆并提交的堆时64KB,该堆就从64KB开始,并保证可以加大到1MB.堆将以64KB块增长。该堆在这里是主要堆,默认堆。一个进程可以创建多个堆如果需要的话。栈是第一个线程的栈,进程可以创建许多线程,每个都有自己的堆栈,DLLs没有栈或者堆,于是在其映像内该值被忽略。
下面是32位的LoaderFlags,没有用。
然后是32位的NumberOfRvaAndSizes,在随后的目录内的有效项目数。最好使用
IMAGE_NUMBEROF_DIRECTORY_ENTRIES,即16。
下面是具有IMAGE_NUMBEROF_DIRECTORY_ENTRIES(16)个成员的IMAGE_DATA_DIRECTORYs结构数组.
IMAGE_DATA_DIRECTORYSTRUCT
VirtualAddress DWORD ?
isize DWORD ?
IMAGE_DATA_DIRECTORYENDS
每个目录描述了节内特定信息位置,32bitsRVAVirtualAddress和尺寸32bit,各个成员索引如下(括号内为索引值):
IMAGE_DIRECTORY_ENTRY_EXPORT(0)输出符号目录用于DLL
IMAGE_DIRECTORY_ENTRY_IMPORT(1)输入符号目录
IMAGE_DIRECTORY_ENTRY_RESOURCE(2)资源目录
IMAGE_DIRECTORY_ENTRY_EXCEPTION(3)异常目录
IMAGE_DIRECTORY_ENTRY_SECURITY(4)安全目录
IMAGE_DIRECTORY_ENTRY_BASERELOC(5)重定位表
IMAGE_DIRECTORY_ENTRY_DEBUG(6)调试目录
IMAGE_DIRECTORY_ENTRY_COPYRIGHT(7)描述版权串
IMAGE_DIRECTORY_ENTRY_GLOBALPTR(8)机器值
IMAGE_DIRECTORY_ENTRY_TLS(9)Threadlocalstorage目录
更多精彩
赞助商链接