PE文件详解—–PE文件的简介

PE文件详解—–PE文件的简介一 PE 文件的背景介绍如今的编程绝大部分都是建立在操作系统上的程序设计 那么深入理解操作系统对于一个程序员来说是至关重要的

大家好,欢迎来到IT知识分享网。

一.PE文件的背景介绍

 如今的编程绝大部分都是建立在操作系统上的程序设计,那么深入理解操作系统对于一个程序员来说是至关重要的。当我们运行一个程序,这个程序从编写到运行到第发生了一些什么呢?了解这些对于优化程序性能,深入理解编程,底层编程,安全编程都是需要熟练掌握的。其中涉及到的主题有虚拟内存管理、寻址方式、虚拟文件系统、多线程、进程通信、进程地址空间等等。那么这些跟PE文件有什么关系呢?实际上,PE文件是一种文件格式的规范,在windows系统上运行的可执行文件的格式exewindows系统的核心机制DLL动态链接库)等等都是PE文件的格式。了解PE文件的格式对于理解操作系统是至关重要的,所以我们需要深入地去理解分析PE文件,这是本文的意义所在。

二.PE文件的定义

 在win32平台下,微软引入了一种叫PE(Protable Executable)的可执行格式。常见的EXE、DLL、OCX、SYS、COM都是PE文件。从某种意义上讲,可执行文件的格式是操作系统本身执行机制的反映。虽然可执行文件格式并不是程序员的首要任务,但是这种工作能够积累大量的知识,有助于对操作系统的深刻理解。

三.相关概念解释

1.虚拟存储器:

具有层次结构存储器计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的“主存储器”。虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址结构和可用磁盘容量。

2.进程地址空间:

每一个进程都具有自己独立的地址空间,32位系统中进程的地址空间为4G。这个独立地址空间是虚拟出来的,操作系统通过使用VMA来对进程的地址空间进行管理。

3.装载PE可执行文件的过程

(1)先读取文件的第一个页,在这个页中包含了Dos头,PE文件头和段表。

(2)检查进程地址空间中目标地址(这个目标地址就是PE头中的一个字段ImageBase,记录的是PE文件装载的首选地址)是否可用。如果不可用,则另选一个装载地址。

(3)使用段表中提供的信息,将PE文件中所有的段映射到地址空   间中相应的位置。

(4)若装载地址不是目标地址,则进行Rebasing

(5)装载所有PE文件所需要的DLL文件。

(6)对PE文件中的所有导入符号进行解析。

(7)根据PE头中指定的参数,建立初始化堆和栈。

(8)建立主线程并且启动线程。

PE文件中与装载相关的只要信息都已包含在PE扩展头(PE Optional Header)和段表。

4.虚拟内存的实现方法与过程

(1)当一个应用程序被启动时,操作系统就创建一个新的进程,并给每个进程分配2G的虚拟地址(不是内存,仅是地址)。

(2)虚拟内存管理器将应用程序的代码映射到那个应用程序的虚拟地址中的某个位置,并把当前所需要的代码读取到物理地址中。

(3)如果使用动态链接库(DLL,DLL也被映射到进程的虚拟地址空间,在需要的时候才被读入到内存中。

(4)其他项目(例如数据,堆栈) 的空间是从物理内存中分配的,并被映射到虚拟地址空间中。

(5)应用程序通过使用它的虚拟地址空间中的地址开始执行,然后虚拟内存管理器把每次内存访问映射到物理位置。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/153980.html

(0)
上一篇 2025-02-28 19:45
下一篇 2025-02-28 20:05

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信