PE header

26 篇文章 0 订阅

PE header 由三部分组成

   字串 “PE\0\0”(Signature)

   映像文件头(FileHeader)

SizeOfImage字段(+50h)

内存中整个PE映像尺寸

     按照“SectionAlignment”对齐的,它就是所有头和节的长度的总和

 

   可选映像头(OptionalHeader)

 

IMAGE_NT_HEADERS STRUCT

  Signature            DWORD                                 ?           ;PE文件标识

  FileHeader          IMAGE_FILE_HEADER                <>

  OptionalHeader  IMAGE_OPTIONAL_HEADER32 <>

IMAGE_NT_HEADERS ENDS 

 

字串 “PE\0\0”

     Signature 一dword类型,值为50h, 45h, 00h, 00h(PE\0\0)。 本域为PE标记,我们可以此识别给定文件是否为有效PE文件。

     这个字串在文件中的位置(e_lfanew),可以在DOS程序头中找到它的指针,它占用四个字节,位于文件开始偏移3CH字节中。

 

 

映像文件头

     该结构域包含了关于PE文件物理分布的信息, 比如节数目、文件执行机器等。

     它实际上是结构IMAGE_FILE_HEADER的简称。

 

Machine字段 ——指定文件的运行平台

     不同平台指令的机器码是不同的 ;如果Windows检测到这个字段指定的适用平台与当前的硬件平台不兼容,它将拒绝装入这个文件 

014ch —— Intel 386

0184h —— Dec Alpha AXP

01f0h  —— IBM Power PC(小尾方式)

0284h —— Dec Alpha AXP64 

 

小尾little endian

     数据的低字节被放置在连续存储区的首位

大尾big endian 

     数据的高字节被放置在连续存储区的首位

 

NumberOfSections字段

文件中存在的节的数量 

 

TimeDateStamp字段

编译器创建此文件的时间,它的数值是从1969年12月31日下午4:00开始到创建时间为止的总秒数 

 

Characteristics字段——影响系统对文件的装入方式 

 

 

 

可选映像头

optional header 结构是 IMAGE_NT_HEADERS 中的最后成员。包含了PE文件的逻辑分布信息。

该结构共有31个域。

 

AddressOfEntryPoint字段 (+28h)

     文件被执行时的入口地址

     如何改变文件执行的入口地址?

 

ImageBase字段 (+34h)

 文件的优先装入地址

     EXE

     DLL

     对link.exe指定/base:address选项来自定义优先装入地址

 

SectionAlignment字段(+38h)

内存中的节的对齐粒度

     每个节被装入的地址必定是本字段指定数值的整数倍

 

FileAlignment字段(+3ch)

文件中的节的对齐粒度

     节存储在磁盘文件中时的对齐单位

 

     提示加载器,为了载入映象文件需要多少页 

 

SizeOfHeaders字段(+54h)

所有头+节表的大小

     文件的开头到第一节的原始数据的偏移量

 

DataDirectory字段(+78h)!!!!!!

 

DataDirectory  IMAGE_DATA_DIRECTORY 16 dup(<>)     ;0078h

IMAGE_DATA_DIRECTORY STRUCT

  VirtualAddress    DWORD      ?     ;数据的起始RVA

  isize                      DWORD      ?     ;数据块的长度

IMAGE_DATA_DIRECTORY ENDS

导出表、导入表、资源、重定位表等数据块

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值