PE文件简介

2018-08-31 15:41:11 浏览数 (1)

PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。它是跨win32平台的,只要运行在Windows上,不管是在什么体系的CPU上都可以运行 PE文件使用平面的地址空间,所有代码和数据都合并在一起,组成一个很大的结构,文件的内容被分为不同的区块,块中包含代码和数据,每个区块在内存中都有其对应的权限,比如有的快只读,有的只写或者有的只可执行。 一般有以下区块: .text : 是在编译或者汇编结束时产生的一种区块,是指令的代码 .rdata :是运行时的只读数据,也就是所说的const常量 .data:初始化的数据块,也就是全局变量 .idata:包含其他外来dll的函数以及数据信息,即输入表 .rsrc:包含全部的资源,如图标、菜单、位图等等 每个区块在内存中按页边界对齐,区块没有大小限制,是一个连续的结构,每个块都有对应的属性 pe文件的优势: 磁盘上的数据结构与在内存中的结构是一致的 相关名词: 入口点(EntryPoint):程序执行的第一条指令所在的内存地址 文件偏移地址(FileOffset)PE文件存储在磁盘上的时候,各个数据的地址相对于文件头的距离为文件的偏移地址 虚拟地址(VirtuallAddress VA)应用程序访问的逻辑地址也就是它的虚拟地址 基地址(ImageBase):文件被映射到内存时,初始地址叫做基地址 pe文件大致结构如下图所示:

一般在说到PE文件时都会涉及到以下几个名词 基地址(ImageBase):PE文件被加载到内存中的首地址,是这个模块的句柄,可以使用函数GetModuleHandle来获取 文件的偏移地址:PE文件中各个部分相对于文件头的偏移 相对虚拟地址(RVA):PE结构被映射到内存中后,某个位置所在内存相对于基地址的偏移 一般可执行文件被PE加载器加载到内存中后,文件的基本格式不会发生改变,只是会将各个块按照页来进行对其,PE文件在磁盘与在内存中的对应关系大致如下图所示:

0 人点赞