首先引用一段百科中对win pe的介绍:

Windows Preinstallation Environment(Windows PE),Windows预安装环境,是带有有限服务的最小Win32子系统,基于以保护模式运行的Windows XP Professional及以上内核。它包括运行Windows安装程序及脚本、连接网络共享、自动化基本过程以及执行硬件验证所需的最小功能。用于安装、部署和修复 Windows 桌面版(家庭版、专业版、企业版和教育版)、Windows Server 和其他 Windows 操作系统,而Windows PE并非为普通用户可以正常使用的操作系统,多数用于开发人员及维修主系统使用。 [1]

Windows PE含有Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10的PE内核。

PE文件就是Portable Executable(可移植执行体)的简写,它是win32系统环境自身所带的可执行文件格式。可移植执行体,就意味着这个文件格式是跨win32平台的,换句话说,就是Windows运行在非Intel的CPU上,任何win32平台PE文件装载器都能够识别和使用这个文件格式,所以所以win32平台下的可执行文件也必须使用PE格式。常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。

1.PE文件结构

PE 文件格式被组织为一个线性的数据流,它由一个MS-DOS 头部开始,接着是一个是模式的程序残余以及一个PE 文件标志,这之后紧接着PE文件头和可选头部。这些之后是所有的段头部,段头部之后跟随着所有的段实体。文件的结束处是一些其它的区域,其中是一些混杂的信息,包括重分配信息、符号表信息、行号信息以及字串表数据。
PE文件总的来说就是由DOS文件头,DOS加载模块,PE文件头,区段表和区段这5部分构成的。对为什么 有两个DOS的解释:如果PE文件运行在Windows系统下面,那么DOS文件头和DOS加载模块是压根用不到的,PE加载器会根据DOS文件头最后面那个标志跳过DOS加载模块而直接转到PE文件头上,其实有两个DOS相关的模块完全就是问了兼容问题考虑的,如果将PE文件在DOS系统下面运行的话,那么就到DOS加载模块表现的时候到了,DOS加载模块就会显示一句话:this program cannot be run in dos mode,翻译一下就是这个程序不能在DOS系统下面运行.

DOS文件头:它是以字母MZ开头的数据,在它的偏移量3C处包含着我PE文件头的起始位置信息。

DOS加载模块:以一段this program cannot be run in DOS mode为标志,当程序试图运行在DOS系统下会出现这句话。

PE文件头:要重点研究的PE文件头,它是一段以PE字母开头的数据,默认224字节。

区段表:又叫节表,是一段记录这个程序中区段大小、位置与属性的表。

区段:又叫做节,有很多的节,每个节都包含了各种不同的数据。

一个典型的PE文件包含以下区段:

.text区段 存放可执行的二进制代码区段

.data区段 初始化数据块,比如全局变量

.idata区段 程序所使用的动态链接库等外接函数和文件信息。

.rsrc区段 存放程序的资源,图标,菜单。

DOS头和NT头就是PE文件中两个重要的文件头。

下面是DOS头的定义:


typedef struct _IMAGE_DOS_HEADER {      // DOS .EXE headerWORD   e_magic;                     // Magic numberWORD   e_cblp;                      // Bytes on last page of fileWORD   e_cp;                        // Pages in fileWORD   e_crlc;                      // RelocationsWORD   e_cparhdr;                   // Size of header in paragraphsWORD   e_minalloc;                  // Minimum extra paragraphs neededWORD   e_maxalloc;                  // Maximum extra paragraphs neededWORD   e_ss;                        // Initial (relative) SS valueWORD   e_sp;                        // Initial SP valueWORD   e_csum;                      // ChecksumWORD   e_ip;                        // Initial IP valueWORD   e_cs;                        // Initial (relative) CS valueWORD   e_lfarlc;                    // File address of relocation tableWORD   e_ovno;                      // Overlay numberWORD   e_res[4];                    // Reserved wordsWORD   e_oemid;                     // OEM identifier (for e_oeminfo)WORD   e_oeminfo;                   // OEM information; e_oemid specificWORD   e_res2[10];                  // Reserved wordsLONG   e_lfanew;                    // File address of new exe header} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

e_magic:一个WORD类型,值是一个常数0x4D5A,用文本编辑器查看该值位‘MZ’,可执行文件必须都是'MZ'开头。

e_lfanew:为32位可执行文件扩展的域,用来表示DOS头之后的NT头相对文件起始地址的偏移。

顺着DOS头中的e_lfanew,我们很容易可以找到NT头,这个才是32位PE文件中最有用的头,定义如下:


typedef struct _IMAGE_NT_HEADERS {DWORD Signature;IMAGE_FILE_HEADER FileHeader;IMAGE_OPTIONAL_HEADER32 OptionalHeader;} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;

关于Windows PE相关推荐

  1. Windows PE入门基础知识:Windows PE的作用、命名规则、启动方式、启动原理

    Windows PE的全名是WindowsPreinstallationEnvironment(WinPE)直接从字面上翻译就 是"Windows预安装环境".微软的本意是:Win ...

  2. Windows PE变形练手2-开发一套自己的PE嵌入模板

    PE嵌入模板 编写一段代码,生成一个已经处理过重定位信息,同时所有的内容都在代码段里,并且没有导入表的PE程序,把这个程序嵌入到其他PE的相关位置,能够独立的运行,接下来是整理了2个模板,一个是Hel ...

  3. Windows Pe 第三章 PE头文件(上)

    第三章  PE头文件 本章是全书重点,所以要好好理解,概念比较多,但是非常重要. PE头文件记录了PE文件中所有的数据的组织方式,它类似于一本书的目录,通过目录我们可以快速定位到某个具体的章节:通过P ...

  4. 菜鸟教程终极篇之Microsoft Windows Pre-installation Environment (Windows PE) 2.0

        大家好啊.通过以前的菜鸟日记大家感觉咋样?今天给大家带来新的知识.学完本文所讲的内容,谁敢在说你是菜鸟.你就拿砖块拍它!HOHO!!Go on!              平时我们在使用电脑中 ...

  5. 基于windows PE文件的恶意代码分析;使用SystemInternal工具与内核调试器研究windows用户空间与内核空间...

    基于windows PE文件的恶意代码分析:使用SystemInternal工具与内核调试器研究windows用户空间与内核空间 ******************** 既然本篇的主角是PE文件,那 ...

  6. Windows PE 背景知识

    1.什么是 Windows PE? 1.1 简要介绍 Windows Preinstallation Environment (Windows PE) 是一个为 Windows 安装而设计的最小操作系 ...

  7. 【虚拟机里测试Windows PE的方法】

    有时候我们需要在虚拟机里测试Windows PE镜像文件.下面就以VMWare Workstation为例,步骤如下: 1.运行虚拟机软件VMWare Workstation并新建虚拟机(如xp). ...

  8. 使用Windows PE部署Windows镜像

    1. 为镜像部署准备WinPE 启动光盘 在不使用第三方的软件工具(如赛门铁克Ghost)来创建和部署Windows系统镜像的情况下,用户需要一张可启动WinPE的光盘.Windows预安装环境(Wi ...

  9. 自己制作Windows PE工具盘

    自己制作Windows PE工具盘 2007-04-13 20:46:47 标签: Windows  PE工具盘 Windows PE的 全称为Windows Preinstallation Envi ...

  10. 告诉你Windows PE 是什么东东?详细介绍一下winpe

    针对菜菜朋友可以对PE这样理解: 大家是不是都用过xp系统?(一个独立的操作系统) xp系统是由好多好多的文件构成的:.exe .txt .dll ~~~ 那么大家一定也知道精简型的XP(没用过也不会 ...

最新文章

  1. 【Binary Tree Level Order Traversal】cpp
  2. oracle 两个逗号分割的字符串 如何判断是否其中有相同值
  3. QT的QStylePainter类的使用
  4. zuul在zuulFilter获取返回值后,接口获取不到数据
  5. Ubuntu 16.04安装Memcached(单机)
  6. 3.2. 添加模板版本(Core Data 应用程序实践指南)
  7. 循环序列模型 —— 1.9 GRU单元(门控循环单元)
  8. JPA ---- 表之间的映射关系
  9. git教程(二)--安装和配置git
  10. 某 iOS 零点击 0day 漏洞已存在8年之久且正遭利用?苹果称正在调查并将推出补丁...
  11. 通过JS制作一个简易数码时钟
  12. python学习笔记(xlsxwriter模块使用)
  13. TensorFlow 莫烦python
  14. 浪潮服务器网卡驱动丢失怎么修复,电脑丢失网卡驱动,学会这一招,轻松搞定...
  15. ART加载OAT文件的过程分析
  16. 超简单全面的html图片自动轮播
  17. 宽带拨号方式接入校网网指南 | windows10、win11、mac设置宽带拨号
  18. Linux必会100个命令(三十八)halt
  19. UniAPP HBuilderX 运行到各个小程序开发工具
  20. 国开《医药商品营销实务》形考任务1 作业1 欧题库答案

热门文章

  1. 赶路人-----李小晓
  2. 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: Shared Memory Provider, error: 0-管道的另一端上无任何进程
  3. 名品极选联合大牌美妆,全面拓展消费需求
  4. shell计算命令:let命令详解
  5. 【Pytorch基础教程34】EGES召回模型
  6. 计算机科学与技术补中益气丸的成分,补中益气丸的成分是什么
  7. 高等数学(三) 极限
  8. sequelize 设置mysql字段类型,text字符长度太小可采用longText
  9. PDF怎么拆分/合并? 3款 PDF 拆分和合并工具分享
  10. matlab 使用 utf-8 编码