[系统安全]PE文件头中的重定位表

PE加载的过程

任何一个EXE程序会被分配4GB的内存空间,用户层处理低2G的内存,驱动处理高2G的内存。

  • 1、双击EXE程序,操作系统开辟一个4GB的空间。
  • 2、从ImageBase决定了加载后的基址,ImageSize决定了程序有多大。
  • 3、然后加载DLL

大体流程:

复制代码
1、PE被执行时,装载器为进程分配虚拟地址空间,在此情况下,并不是把完整的PE文件载入到磁盘中,而是做一个简单的内存映射。

2、PE装载器在内核中创建进程对象和主进程对象以及其他的内容。

3、PE装载器搜索输入表,装载应用程序所用的动态链接库,方式类似于应用程序的装载。

4、PE装载器执行PE文件首部所指定地址的代码,开始执行应用程序。

PE文件头中的重定位表

程序被装入内存时,其基址是由字段IMAGE_OPTIONAL_HEADER32.ImageBase决定的。如果当装载时该位置已经被别的程序使用,那么操作系统就有权重新选择一个基地址。这个时候就需要对所有的重定位信息进行修正,而修正的依据就是PE的重定位表。

重定位表结构

重定位表为数据目录中注册的数据类型之一,其描述信息处于数据目录的第6个目录项中。

复制代码
typedef struct _IMAGE_BASE_RELOCATION {
    DWORD   VirtualAddress;    // 页存储的起始RVA
    DWORD   SizeOfBlock;      // 重定位块的长度
} IMAGE_BASE_RELOCATION;
typedef IMAGE_BASE_RELOCATION UNALIGNED * PIMAGE_BASE_RELOCATION;
相关推荐
m0_7156744318 分钟前
2026年中国API安全产品综合排名:选型指南与行业趋势解析
网络·安全·网络安全
学烹饪的小胡桃32 分钟前
资产设备管理系统 WGFIX 怎么设置https访问
linux·运维·服务器·网络·安全
猫哥随身wifi1 小时前
AI 手机越智能,随身网络越关键|AI 终端带来的网络新需求
网络·人工智能·智能手机
xixiaoyunya1 小时前
数据库自动备份方案搭建指南:从手动导出到全自动化容灾
安全·电脑
草莓熊Lotso2 小时前
【Redis 进阶】主从复制深度解析:从配置落地到 PSYNC 同步原理
linux·开发语言·网络·数据库·redis·缓存·php
爱学习的程序媛2 小时前
TCP / UDP 协议详解
网络·网络协议·udp·tcp·通信协议
爱学习的程序媛2 小时前
以太网协议详解
网络·网络协议·计算机网络·以太网·ethernet·通信协议
湘美书院--湘美谈教育2 小时前
湘美书院随笔:AI时代的生活经济学
大数据·人工智能·安全·自动化·生活
Splashtop高性能远程控制软件2 小时前
微软 2026 年 9 月补丁星期二技术分析:974 个漏洞的分级修复优先级清单
运维·安全·自动化·远程工作·splashtop
兔叭_哥2 小时前
WPS 阿里V3 全流程逆向分析与求解
网络·wps