vc dll 结构体_[PE](4)PE数据结构字段详解

一、PE头IMAGE_NT_HEADER的字段

首先再看一下 IMAGE_NT_HEADER 的结构

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

1、IMAGE_NT_HEADER.Signature

PE文件标识 ,4字节大小,被定义为0x00004550,ASCII就是"PE00",更改其中任意一个字节,操作系统都无法正确识别PE文件

2、IMAGE_NT_HEADER.FileHeader

该结构指向 IMAGE_FILE_HEADER ,由于PE扩展自通用COFFEE规范,所以,该字段在官方文档中被称为标准COFF头

3、IMAGE_NT_HEADER.OptionalHeader
该结构指向 IMAGE_OPTIONAL_HEADER32 ,windows操作系统可执行文件的大部分特性均在这个结构里呈现

因为符合COFF规范的".obj"目标文件中该部分并不存在,所以该部分被称为OptionHeader(可选的头部信息,简称“可选头”),它是操作系统映像文件所独有的头部信息

可选头分为两部分,前10个字段属于原COFF,用来加载运行一个可执行文件;后21个字段则是通过链接器追加的。它们作为PE扩展部分,用于描述可执行文件的一些信息,供PE加载器使用

二、标准PE头 IMAGE_FILE_HEADER 的字段

1、IMAGE_FILE_HEADER.Machine

这个字段可以表示文件的运行平台

5a2577a36d76ebfd785c717bfd078142.png

一般只要记住0x014c代表的是i386,也就是平时的Intel32位平台,这个平台平时用的最多

还有其他值代表的平台:

3308759d21127887637d4d16798c5159.png

2、IMAGE_FILE_HEADER.NumberOfSections

文件中存在的节的总数

在Windows XP中,可以有0个节,但是这个值不能小于1,也不能大于96

如果将这个值设置为0,操作系统会提示不是有效的Win32程序

如果想在PE中增加或删除节,这个值也必须要改变

比如说在写壳的时候增加了一个区段用来放壳代码,那么这个值就要+1

3、IMAGE_FILE_HEADER.TimeDateStamp

编译器创建此文件时的时间戳,存放的是自1970/1/1 00:00 开始到创建时间为止的总秒数

解析数据可以用到tm结构体

bcb1eb80cd920bced23201b4c2f578ea.png

struct tm{
        int tm_sec;   // 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值