WEB开发网
开发学院网络安全黑客技术 PE文件格式(3) 阅读

PE文件格式(3)

 2007-01-14 20:15:00 来源:WEB开发网   
核心提示: IMAGE_RESOURCE_DATA_ENTRYSTRUCTOffsetToDatadd?Size1dd?CodePagedd?Reserveddd?IMAGE_RESOURCE_DATA_ENTRYENDS32位'OffsetToData'从资源节开始到原始数据的偏移量
IMAGE_RESOURCE_DATA_ENTRYSTRUCT
  OffsetToDatadd?
  Size1dd    ?
  CodePagedd  ?
  Reserveddd  ?
IMAGE_RESOURCE_DATA_ENTRYENDS

32位'OffsetToData'从资源节开始到原始数据的偏移量,32位数据大小Size,32位'CodePage'

和32保留。

原始数据格式依赖于资源类型,任何字符串资源都是UNICODE格式。

重定位relocations

-----------

最后一个数据目录是重定位,基重定位目录被IMAGE_DIRECTORY_ENTRY_BASERELOC指向,典型的包括一个自己的节,名字是".reloc"以及IMAGE_SCN_CNT_INITIALIZED_DATA,IMAGE_SCN_MEM_DISCARDABLE和

IMAGE_SCN_MEM_READ位集合。

如果映象没有被加载器调入优先地址,则该数据被加载器使用。这种情况下给链接器填入的地址无效了。加载器必须修复用于静态变量的绝对地址,串等。

IMAGE_BASE_RELOCATIONSTRUCT
  VirtualAddressdd ?
  SizeOfBlockdd   ?
IMAGE_BASE_RELOCATIONENDS

重定位目录是一系列块,每个块包括重定位信息针对4K的映象。一个块起始于一个

'IMAGE_BASE_RELOCATION'结构,包括32位的'VirtualAddress'和32位的'SizeOfBlock'.随后是实际的重定位数据每个都是16位的。'VirtualAddress'是本块要应用的基地址。'SizeOfBlock'是整个块的大小。后面的重定位的数目是('SizeOfBlock'-sizeof(IMAGE_BASE_RELOCATION))/2,重定位信息以VirtualAddress'=0的IMAGE_BASE_RELOCATION结构结束。

每个16位重定位信息包括低12位的重定位位置和高4位的重定位类型。要得到重定位的RVA,IMAGE_BASE_RELOCATION'的'VirtualAddress'需要加上12位位置偏移量.类型是下列之一:

上一页  1 2 3 4 5 6 7  下一页

Tags:PE 文件 格式

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