CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

PE头文件是什么东东呀??

楼主cceeooluyan(X.....)2005-07-01 22:31:41 在 其他开发语言 / 汇编语言 提问

PE头文件是什么东东。。。。。。。。  
  这个东东起什么作作呀 问题点数:20、回复次数:6Top

1 楼phpsessid(风随影动)回复于 2005-07-02 10:09:48 得分 0

MICROSOFT   INTRODUCED   A   NEW   executable   file   format   with   Windows   NT.   This   format   is   called   the   Portable   Executable   (PE)   format   because   it   is   supposed   to   be   portable   across   all   32-bit   operating   systems   by   Microsoft.   The   same   PE   format   executable   can   be   executed   on   any   version   of   Windows   NT,   Windows   95,   and   Win32s.   Also,   the   same   format   is   used   for   executables   for   Windows   NT   running   on   processors   other   than   Intel   x86,   such   as   MIPS,   Alpha,   and   Power   PC.   The   32-bit   DLLs   and   Windows   NT   device   drivers   also   follow   the   same   PE   format.  
   
  http://www.windowsitlibrary.com/Content/356/11/1.html  
   
  Top

2 楼WYlslrt(WY.lslrt(http://www.wyos.net))回复于 2005-07-04 13:26:32 得分 0

去msdn搜索一下PE,就会有关于PE的完整文档Top

3 楼ReverseU(初来乍到,多多关照)回复于 2005-07-04 17:34:05 得分 0

PE头文件指定了PE文件开始部分的结构。PE文件是符合微软PE格式的可执行文件。利用这个PE头文件就可以定位到任何一个PE文件开始部分的各个结构。Top

4 楼VxD1(Dump)回复于 2005-07-07 15:30:27 得分 0

PE文件头格式定义了一些程序载入时需要的数据Top

5 楼piziliu2003(眼淚咖啡)回复于 2005-07-16 10:15:16 得分 0

考虑到早期写的PE教程1是自己所有教程中最糟糕的一篇,此番决心彻底重写一篇以飨读者。  
   
  PE   的意思就是   Portable   Executable(可移植的执行体)。它是   Win32环境自身所带的执行体文件格式。它的一些特性继承自   Unix的   Coff   (common   object   file   format)文件格式。"portable   executable"(可移植的执行体)意味着此文件格式是跨win32平台的   :   即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPU上PE执行体必然得有一些改变。所有   win32执行体   (除了VxD和16位的Dll)都使用PE文件格式,包括NT的内核模式驱动程序(kernel   mode   drivers)。因而研究PE文件格式给了我们洞悉Windows结构的良机。  
   
  本教程就让我们浏览一下   PE文件格式的概要。  
   
  DOS   MZ   header    
  DOS   stub    
  PE   header    
  Section   table    
  Section   1    
  Section   2    
  Section   ...    
  Section   n    
   
  上图是   PE文件结构的总体层次分布。所有   PE文件(甚至32位的   DLLs)   必须以一个简单的   DOS   MZ   header   开始。我们通常对此结构没有太大兴趣。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随   MZ   header   之后的   DOS   stub。DOS   stub实际上是个有效的   EXE,在不支持   PE文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串   "This   program   requires   Windows"   或者程序员可根据自己的意图实现完整的   DOS代码。通常我们也不对   DOS   stub   太感兴趣:   因为大多数情况下它是由汇编器/编译器自动生成。通常,它简单调用中断21h服务9来显示字符串"This   program   cannot   run   in   DOS   mode"。  
   
  紧接着   DOS   stub   的是   PE   header。   PE   header   是PE相关结构   IMAGE_NT_HEADERS   的简称,其中包含了许多PE装载器用到的重要域。当我们更加深入研究PE文件格式后,将对这些重要域耳目能详。执行体在支持PE文件结构的操作系统中执行时,PE装载器将从   DOS   MZ   header   中找到   PE   header   的起始偏移量。因而跳过了   DOS   stub   直接定位到真正的文件头   PE   header。  
   
  PE文件的真正内容划分成块,称之为sections(节)。每节是一块拥有共同属性的数据,比如代码/数据、读/写等。我们可以把PE文件想象成一逻辑磁盘,PE   header   是磁盘的boot扇区,而sections就是各种文件,每种文件自然就有不同属性如只读、系统、隐藏、文档等等。   值得我们注意的是   ----   节的划分是基于各组数据的共同属性:   而不是逻辑概念。重要的不是数据/代码是如何使用的,如果PE文件中的数据/代码拥有相同属性,它们就能被归入同一节中。不必关心节中类似于"data",   "code"或其他的逻辑概念:   如果数据和代码拥有相同属性,它们就可以被归入同一个节中。(译者注:节名称仅仅是个区别不同节的符号而已,类似"data",   "code"的命名只为了便于识别,惟有节的属性设置决定了节的特性和功能)如果某块数据想付为只读属性,就可以将该块数据放入置为只读的节中,当PE装载器映射节内容时,它会检查相关节属性并置对应内存块为指定属性。  
   
  如果我们将PE文件格式视为一逻辑磁盘,PE   header是boot扇区而sections是各种文件,但我们仍缺乏足够信息来定位磁盘上的不同文件,譬如,什么是PE文件格式中等价于目录的东东?别急,那就是   PE   header   接下来的数组结构   section   table(节表)。   每个结构包含对应节的属性、文件偏移量、虚拟偏移量等。如果PE文件里有5个节,那么此结构数组内就有5个成员。因此,我们便可以把节表视为逻辑磁盘中的根目录,每个数组成员等价于根目录中目录项。  
   
  以上就是PE文件格式的物理分布,下面将总结一下装载一PE文件的主要步骤:  
   
  当PE文件被执行,PE装载器检查   DOS   MZ   header   里的   PE   header   偏移量。如果找到,则跳转到   PE   header。    
  PE装载器检查   PE   header   的有效性。如果有效,就跳转到PE   header的尾部。    
  紧跟   PE   header   的是节表。PE装载器读取其中的节信息,并采用文件映射方法将这些节映射到内存,同时付上节表里指定的节属性。    
  PE文件映射入内存后,PE装载器将处理PE文件中类似   import   table(引入表)逻辑部分。    
  上述步骤是基于本人观察后的简述,显然还有一些不够精确的地方,但基本明晰了执行体被处理的过程  
  Top

6 楼aderly(冬冬)回复于 2005-07-16 17:29:16 得分 0

幫頂Top

相关问题

  • 用什么东东打开*.db文件?
  • obj文件和lib文件是何东东?
  • MASM32中可以自己指定PE格式文件中的DOS文件头吗?
  • PE文件格式
  • 有谁知道pe文件头结构中import表的细节?
  • .com文件是什么东东?和.exe文件有什么区别
  • 寻找可以批量地将 wav 文件转换为 rm 文件的东东!!!
  • 如何利用ASP或其它的东东上传文件???
  • 内存映射文件是什么东东?
  • 请大家帮我找一下恢复Excel文件的东东!

关键词

  • 32-bit
  • win32
  • 文件
  • 文件格式
  • 属性
  • 执行
  • 逻辑
  • 数据
  • 映射
  • 结构

得分解答快速导航

  • 帖主:cceeooluyan

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo