《黑客免杀攻防学习笔记》——PE文件结构1

本文详细介绍了PE文件结构,包括MS-DOS头、PE文件头、IMAGE_FILE_HEADER结构、IMAGE_OPTIONAL_HEADER32以及数据目录表。探讨了如Signature字段、文件属性、代码和数据段的大小、入口点地址、载入基址等关键概念,旨在帮助读者深入理解PE文件的组织方式。
摘要由CSDN通过智能技术生成

文章中的图片大部分为自己做截屏,少量摘自网络,若有侵权请及时告知,我会尽快删除。转载请注明出处。

1.MS-DOS头

         DOS头主要就是为了兼容之前的DOS操作系统,DOS头后面便是DOS Stub,这两部分构成了MS-DOS可执行文件的基本要素,如果PE文件运行在DOS系统中便会执行Stub中的代码,一般上都是“Thisprogram cannot run in DOS mode ”。所以DOS没有什么可以讲的,主要就是开头两个字节MZ表明他是一个PE文件的DOS头开始。还有就是距离MZ偏移量为0x3C的内容便是PE头的位置。

2.PE文件头

         下面便是PE文件头的数据结构(来自WinNT.h头文件)

typedef struct _IMAGE_NT_HEADERS {

   DWORD Signature;                    //PE标识

   IMAGE_FILE_HEADER FileHeader; //文件头

   IMAGE_OPTIONAL_HEADER32 OptionalHeader;   //可选头(扩展头)

} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;

2.1 Signature字段

         可以看到Signature字段是固定的0x50450000用来标识从这里开始便是PE头。

#define IMAGE_NT_SIGNATURE    0x50450000 // PE00

2.2 IMAGE_FILE_HEADER结构

         下面可以针对这个结构结合实际的十六进制数据来熟悉:

typedef struct _IMAGE_FILE_HEADER {

   WORD    Machine;                          //运行平台0x14C表示Intel 386,64位则是0x200

   WORD    NumberOfSections;       //区段的数量0x0002,表示这个文件有2个段

   DWORD   TimeDateStamp; //文件创建时间,3D91AA47是从GMT的1970.1.1以来秒数

   DWORD   PointerToSymbolTable;//指向COOF符号表偏移,为0则不存在该符号表

   DWORD   NumberOfSymbols;//符号数,如果前一个为0这个也为0

   WORD    SizeOfOptionalHeader;//这个结构的下一个结构即可选头的大小0xE0

   WORD    Characteristics;             //表示PE文件的属性,普通文件0x10F,dll文件为0x210

} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值