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个字节


具体地址等于偏移地址+基础地址

目前就记这么多
本文来自博客园,作者:漫宿骄盛,转载请注明原文链接:https://www.cnblogs.com/msjs/p/18826448
都是顺手发的,写的时候可能有错误,如果发现了,望各位指出。

浙公网安备 33010602011771号