PE文件详解八:IMAGE_BASE_RELOCATION STRUC基址重定
2013-02-26 18:41
302 查看
PE文件详解八:IMAGE_BASE_RELOCATION STRUC基址重定
什么是基址重定位?答:重定位就是你本来这个程序理论上要占据这个地址,但是由于某种原因,这个地址现在不能让你霸占,你必须转移到别的地址,这就需要基址重定位
但凡涉及到直接寻址的指令都需要进行重定位处理!
IMAGE_BASE_RELOCATION STRUC 【基址重定位位于数据目录表的第六项,共8+N字节】 { +00 h DWORD VirtualAddress ;重定位数据开始的RVA 地址 +04 h DWORD SizeOfBlock ;重定位块得长度,标识重定向字段个数 +08 h WORD TypeOffset ;重定项位数组相对虚拟RVA,个数动态分配 }; IMAGE_BASE_RELOCATION ENDS
1.VirtualAddress 是 Base Relocation Table 的位置它是一个 RVA 值;
2.SizeOfBlock 是 Base Relocation Table 的大小;
3.TypeOffset 是一个数组,数组每项大小为两个字节(16位),它由高 4位和低 12位组成,高 4位代表重定位类型,低 12位是重定位地址,它与 VirtualAddress 相加即是指向PE 映像中需要修改的那个代码的地址。
TypeOffset高位字节的代码定义:
IMAGE_REL_BASED_ABSOLUTE (0) 使块按照32位对齐,位置为0。 IMAGE_REL_BASED_HIGH (1) 高16位必须应用于偏移量所指高字16位。 IMAGE_REL_BASED_LOW (2) 低16位必须应用于偏移量所指低字16位。 IMAGE_REL_BASED_HIGHLOW (3) 全部32位应用于所有32位。 IMAGE_REL_BASED_HIGHADJ (4) 需要32位,高16位位于偏移量,低16位位于下一个偏移量数组元素,组合为一个带符号数,加上32位的一个数,然后加上8000然后把高16位保存在偏移量的16位域内。 IMAGE_REL_BASED_MIPS_JMPADDR (5) Unknown IMAGE_REL_BASED_SECTION (6) Unknown IMAGE_REL_BASED_REL32 (7) Unknown
相关文章推荐
- PE文件详解八:IMAGE_BASE_RELOCATION STRUC基址重定
- PE文件详解七:IMAGE_EXPORT_DIRECTORY STRUCT导出表
- PE文件详解七:IMAGE_EXPORT_DIRECTORY STRUCT导出表
- PE文件详解之IMAGE_NT_HEADER结构
- PE总结14---PE文件结构之重定位表 (IMAGE_BASE_RELOCATION)
- windows PE Image 文件分析(6)--- .reloc 节与 base relocation table
- PE文件详解三:节表(区块表)IMAGE_SECTION_HEADER结
- PE文件详解
- PE文件格式详解
- PE文件 节表IMAGE_SECTION_HEADER的正确定位方法
- PE文件结构详解(五)延迟导入表
- PE文件格式详解(上)
- PE文件格式详解(上)
- PE总结6---PE文件结构NT头之扩展头--IMAGE_OPTIONAL_HEADER
- PE文件详解
- PE文件详解(七)
- 小甲鱼PE详解之IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用(PE详解03)
- PE文件格式详解,第二讲,NT头文件格式,以及文件头格式