WEB开发网
开发学院软件开发VC PE文件格式详解(下) 阅读

PE文件格式详解(下)

 2006-07-20 11:43:35 来源:WEB开发网   
核心提示: 最后一个域dwRVAFunctionAddressList是一个相对虚拟地址,它指向一个虚拟地址表,PE文件格式详解(下)(10),在文件装载的时候,这个虚拟地址表会被装载器置于段数据之中,映像名称则肯定会出现在这里,如果映像导出了信息,但是在文件装载前,这些虚拟地址会被一些严密符合函数名

最后一个域dwRVAFunctionAddressList是一个相对虚拟地址,它指向一个虚拟地址表。在文件装载的时候,这个虚拟地址表会被装载器置于段数据之中。但是在文件装载前,这些虚拟地址会被一些严密符合函数名称列表的虚拟地址替换。所以在文件装载之前,有两个同样的虚拟地址列表,它们指向导入函数列表。

调试信息段,.debug

调试信息位于.debug段之中,同时PE文件格式也支持单独的调试文件(通常由.DBG扩展名标识)作为一种将调试信息集中的方法。调试段包含了调试信息,但是调试目录却位于早先提到的.rdata段之中。这其中每个目录都涉及了.debug段之中的调试信息。调试目录的结构IMAGE_DEBUG_DIRECTORY被定义为: // WINNT.H
typedef struct _IMAGE_DEBUG_DIRECTORY {
 ULONG Characteristics;
 ULONG TimeDateStamp;
 USHORT MajorVersion;
 USHORT MinorVersion;
 ULONG Type;
 ULONG SizeOfData;
 ULONG AddressOfRawData;
 ULONG PointerToRawData;
} IMAGE_DEBUG_DIRECTORY, *PIMAGE_DEBUG_DIRECTORY;
这个段被分为单独的部分,每个部分为不同种类的调试信息数据。对于每个部分来说都是一个像上边一样的调试目录。不同的调试信息种类如下: // WINNT.H
#define IMAGE_DEBUG_TYPE_UNKNOWN 0
#define IMAGE_DEBUG_TYPE_COFF 1
#define IMAGE_DEBUG_TYPE_CODEVIEW 2
#define IMAGE_DEBUG_TYPE_FPO 3
#define IMAGE_DEBUG_TYPE_MISC 4
  
每个目录之中的Type域表示该目录的调试信息种类。如你所见,在上边的表中,PE文件格式支持很多不同的调试信息种类,以及一些其它的信息域。对于那些来说,IMAGE_DEBUG_TYPE_MISC信息是唯一的。这一信息被添加到描述可执行映像的混杂信息之中,这些混杂信息不能被添加到PE文件格式任何结构化的数据段之中。这就是映像文件中最合适的位置,映像名称则肯定会出现在这里。如果映像导出了信息,那么导出数据段也会包含这一映像名称。

上一页  5 6 7 8 9 10 

Tags:PE 文件 格式

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