PE文件结构

一,介绍

PE文件(Portable Executable file),是一种可执行文件格式,满足此格式的文件都可以在Windows操作系统运行。在Linux系统运行的文件是ELF。

二,结构

PE文件分为头和节

1.头

头在我理解看来就是一些配置参数和签名,分为DOS头和NT头。

DOS头:

分为Header和DOS存根

Header:

Header 结构 (00000000 - 0000003F,共 64 个字节)
其中最重要的是前两个字节4D5A和我标蓝的部分
4D5A是MOS的签名,而我标蓝的部分是PE头的虚拟地址。
由于WIN是小端序,所以应该把这个看成 0x0108,这个地址就是PE头的地址

DOS存根:

DOS存根则是一段简单的DOS程序,主要用来输出类似“This program cannot be run in DOS mode.”的提示语句。即使没有DOS存根,程序也能正常执行
但必须保证PE的地址仍然是之前那个数字。
 
我把这一段改成这样,程序仍然能够运行:
下面那个绿色的改成这样也能运行:

NT头:

全弄一张图上了

2.节

PE节表位于PE头的下面,PE节表中记录了各个节表的起始位置、大小,以及在内存中偏移位置和属性
节名占8个字节
具体地址等于偏移地址+基础地址

目前就记这么多

posted @ 2025-04-15 11:52  漫宿骄盛  阅读(58)  评论(0)    收藏  举报