Windows PE文件常识

本文详细解释了操作系统中的虚拟内存地址(VA)、相对虚拟内存地址(RVA)、文件偏移地址(FOA)以及它们在PE文件结构中的应用,包括数据目录、节的概念,强调了Windows系统中程序安全性和权限管理的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.虚拟内存地址VA(又名虚拟地址)

该概念属于操作系统中的概念——每个空间都有独立的4GB(32为环境下)或者2^64B的虚拟地址空间,在这个空间中定位的地址为虚拟内存地址,在PE中,进程本身的VA等于:进程的基地址+相对虚拟内存地址。

2.相对虚拟内存地址RVA

一个进程被加载到虚拟内存空间之后,其相关的动态链接库也会被加载。这些同时加载到进程地址空间的文件被称为模块。每一个模块在加载是都会有一个基地址。不同模块的基地址一般式不同的,但是也有特殊情况,如果两个的基地址相同,就有曹子系统来决定这两个模块在虚拟地址空间中的额具体位置。相对虚拟内存地址是某个特定位置相对于模块基地址的偏移量,因此RVA是针对摸个模块而存在的。

RVA与具体模块相关,他有一个范围,该范围从模块开始到模块结束。脱离这个范围的RVA是无效的,称为越界。越界的RVA地址没有任何意义。

3.文件偏移地址FOA

文件偏移地址和内存无关,它只是某个位置距离文件头的偏移量

4.特殊地址

此类地址是一种特殊地址,其计算方法不是从文件头或者内存某个某开的额基地址算起,而是从某个特定的位置算起,这种地址在PE结构中很少见,例如在资源表中就出现过这样的地址

5.指针

PE数据结构中指针的定义:如果数据结构中某个字段存储的值为一个地址,那么这个字段就是一个指针。

6.数据目录

Windows下的可执行文件是PE中的一种,这种文件除了包含代码以及数据段的相关数据以外,还包含许多与文件执行油管的其他数据,如引用外部函数的信息、PE程序的图标、内部导出函数等,这些数据可能会随着操作系统新特性的出现而增加。

PE文件有一个数据结构称为数据目录,其中记录了所有可能的数据类型,这些类型中,目前已经定义的有15种,包括导出表、导入表、资源表、异常表、属性证书表、重定位表、调试数据、Architecture、Global Ptr、线程局部存储、加载配置表、绑定导入表、IAT、延迟导入表和CLR运行时头部。

7.节

无论是结构化程序设计还是面向对象程序设

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值