基址重定位表

基址重定位表在DLL和SYS文件中至关重要,用于解决多个动态链接库在内存中定位的问题。当EXE文件加载时,操作系统会自动处理重定位,但DLL和SYS需依赖此表进行地址转换。通过示例解释了如何从RVA计算实际内存地址。
摘要由CSDN通过智能技术生成

基址重定位表

基址重定位表(BASE RELOCATION Table)

位于可选头最后一个成员的第6个元素

转到基址重定位表

在这里插入图片描述

将基址1000+424(低12位)得到1424,这个RVA就是在文件中的硬编码的地址

转到1424(位于第一个节区)

在这里插入图片描述

1424地址对应的值为010010C8

将010010C8-01000000(基址)=10C8

在这里插入图片描述

再将10C8+00D90000(实际加载地址)=00D910C8

在这里插入图片描述

得到程序硬编码的实际映射地址

这个地址(00D910C8)其实就是IAT在映射中的地址

基址重定位表在EXE文件中没什么影响(可以删除),因为EXE文件加载到内存中时,OS会为进程分配独立的4GB空间,不存在重定位
而DLL,SYS文件,必须有基址重定位表,因为DLL,SYS文件是加载到EXE进程中的,如果有多个DLL,SYS文件,则需要重定位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值