基址重定位表

基址重定位表在PE文件加载到内存时起关键作用,处理因加载地址变化引起的硬编码地址问题。当PE文件不能加载到ImageBase指定地址时,通过查找并更新硬编码地址实现重定位。本文详细介绍了PE重定位的基本原理,基址重定位表的结构和分析方法,以Win7 notepad.exe为例展示了重定位过程。
摘要由CSDN通过智能技术生成

基址重定位表(Base Relocation Table),记录PE重定位时需要修改的硬编码地址的位置。

一般地,向进程的虚拟内存加载PE文件(EXE、DLL、SYS)时,文件会被加载到PE头的ImageBase所指的地址处。若加载的文件为DLL或SYS,且ImageBase位置加载了其他DLL或SYS文件时,则会进行PE重定位。

PE重定位是指PE文件无法加载到ImageBase所指位置时,而加载到其他地址所发生的一系列的处理行为。

因为在进程创建好之后,EXE文件会首先加载到内存中,因而EXE无须考虑重定位的问题。Windows Vista之后的版本引入ASLR机制,每次运行PE文件都会被加载到随机地址。

系统的DLL实际不会发生重定位,因为同一系统的kernel32.dll、user32.dll等会被加载到自身固有的ImageBase。

下面以Win7的notepad.exe程序为例,先使用PEView打开该程序查看ImageBase的值为01000000,再使用Ollydbg打开该程序查看。



可以看到,在EP代码中,方框中的地址是以硬编码的形式存在的。其中地址5810FC和581100是.text节区的IAT区域,地址58C0A4为.data节区的全局变量。每当在Ollydbg中重启notepad.exe程序,地址值就会随加载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值