0
点赞
收藏
分享

微信扫一扫

PE文件(一)PE头

哈哈镜6567 2022-02-13 阅读 78
windows

PE文件结构(一)PE头
12/100
发布文章
qq_63329753
未选择任何文件
new

PE文件结构

PE(Portble Executable File Format,可移植的执行体文件格式) 文件是Windows操作系统下使用的可执行文件格式,使用该格式的目标是使链接生成的EXE文件能在不同的CPU工作指令下工作。


PE文件种类:(种类:主拓展名)

  • 可执行系列:EXE,SCR;
  • 驱动程序系列:SYS,VXD;
  • 库系列:DLL,OCX,CPL,DRV;
  • 对象文件系列:OBJ;

在这里插入图片描述

PE文件头部:

  • DOS头(MZ头)
  • DOS stub(DOS存根)
  • PE头 (IMAGE_NT_HEADERS)
  • 节表(多个IMAGE_SECTION_HEADER结构)

PE文件身体:

  • 节内容

具体解析:

一、DOS头;

一个64字节的结构体:

在这里插入图片描述

2个重要成员:

e_magic:DOS签名(4D5A,MZ)

**PE_start=DOS MZ基地址+IMAGE DOS_HEADER.e_lfanew **

e_lfanew:指向PE头的偏移地址

例子:

在这里插入图片描述


二、DOS stub;

一个字节块,大小不定(缺少文件也可运行)

例子:在这里插入图片描述

三、PE头;

PE头IMAGE_NT_HEADERS(三部分):

  1. PE头标识 Signature:PE\0\0,占四字节

    在这里插入图片描述

    #0120地址与e_lfanew一致

  2. 标准PE头,IMAGE_FILE_HEADER,标准通用对象文件格式(Common Object File Format,COFF)头:记录了PE文件的全局属性,20字节。
    在这里插入图片描述

    #1.每个CPU都拥有唯一的Machine码

    在这里插入图片描述

    #2.Characteristics,每位有特定属性

    在这里插入图片描述

  3. 拓展PE头IMAGE_OPTIONAL_HEADER32,大小由标准PE头.SizeofOptionalHeader指定

    在这里插入图片描述

    在这里插入图片描述

    #1.Magic:32位时,值为10B,64位为20B

    一个重要字段DateDirectory:

    在这里插入图片描述

总的数据目录一共16个相同的结构体排在一起:在这里插入图片描述

在这里插入图片描述

例子:

在这里插入图片描述

#Magic 020B,64位

#大小为 00F0(15行,每行16字节)

四、节表;

**IMAGE_NT_HEADERS后紧跟着节表,由许多个节表项组成,每个对应一个节区,数量在IMAGE_FILE_HEADER.NumberOfSections中。

每个节表40字节。

在这里插入图片描述

项组成,每个对应一个节区,数量在IMAGE_FILE_HEADER.NumberOfSections中。

每个节表40字节。

[外链图片转存中…(img-y0OljAOB-1644736362110)]

例子:在这里插入图片描述
本例8个节区,均以2E开头(未找到硬性规定,应该是约定俗成),40字节。

举报

相关推荐

0 条评论