以上两张图是PE文件的基本概况,在Windows下所谓PE文件即Portable Executable,意为可移植的可执行的文件。常见的.EXE、.DLL、.OCX、.SYS、.COM都是PE文件。PE文件有一个共同特点:前两个字节为4D 5A(MZ)。如果一个文件前两个字节不是4D 5A则其肯定不是可执行文件。
在可执行文件中,要指定内存的地址,在PE文件中的地址是虚拟地址(为了避免有确定的的内存地址而带来的问题,如空间利用和移植性)
Visual C++ 建立的EXE文件基地址默认是00400000h,DLL文件基地址是10000000h
在PE文件中,虚拟地址=基地址+相对虚拟地址
以上是一种映射关系,大家可以自己悟一下,任何在执行的虚拟地址都是映射而来的
基本概念已经清楚了,我们按照图10.1逐步开始分析
1. DOS部首
主要是两部分 DOS stub、DOS MZ,DOS部首具体如下