首页 > 编程知识 正文

pe的占格是什么,pe文件对齐机制

时间:2023-05-03 09:06:55 阅读:167134 作者:4483

内存对齐与文件对齐

pe文件将对齐,无论其是否存储在磁盘和内存中,但对齐值不同。

PE文件头中的文件定义磁盘区块的对齐值。 每个块都从对齐值倍数的偏移位置开始存储。 另一方面,块的实际代码和数据的大小不一定这么多,所以一般用00h填充剩下的地方。 这就是方块之间的间隙。

PE文件头中的SectionAligment定义内存中块的对齐值。 当PE文件映射到内存时,块始终从至少一个页面边界开始。

rva与fov的相互转换

RVA与FOV的相互转换

为什么要转换:可以从内存的位置找到.文件中这个数据的位置.或者相反.找到后可以修改.

relativevirtualaddress (RVA )是内存中数据相对于文件开头位置的偏移。

举个例子:

在尝试访问某个数据时,如果Windows加载程序将PE文件加载到00400000h的内存中,某个块的某个数据被加载到0040…xh中,则该数据的RVA为(0040…xh - 00400000h ) (RVA=虚拟地址-ImageBase (基于模块.程序的第一个地址.)

FOV与RVA大致相同,FOV是指文件位于硬盘上时要访问的数据位置相对于文件头位置的偏移。

所以我们可以看到他们的关系。 如果rva的位置位于文件报头中,则此时rva与fov值相等,因为rva还没有受到解压缩的影响。

如果不在文件头中,则只需计算数据位置与包含该数据的节之间的差值。 然后,因为该差分值与硬盘内的数据位置和某一节的差分值相同,所以首先求出差分值=rva-节virtualadress (存储器对齐值)。 然后,fov=差异部分pointertorawData (文件对齐值)。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。