关于PE文件随笔

   PE文件的结构大家都知道,在一个操作系统中可执行得瑟代码在被装入内存执行之前是以文件的方式存放在磁盘中的,DOS操作系统中的COM文件是最早的也是结构最简单的可执行文件,COM文件中只有可执行代码没有任何“支持性”的数据,所以COM文件在使用方便的同时也存在的很多的限制。首先是没有附加数据来指定文件的入口,这样,第一句执行的指令必须安排在文件的头部,再就是没有重定位信息,这样代码不能有跨段操作数据的指令,造成代码和数据,甚至包括堆栈只能限制在同一个64K的段中。

   为了更灵活的使用可执行代码DOS系统中又定义了另一种可执行的文件,那就是EXE文件,EXE文件在代码的前面加了一个文件头,文件头包括各种说明数据,如文件入口,堆栈位置,重定位表等等,操作系统根据文件头的信息将代码部分载入内存,根据重定位表修正代码,最后在设置好堆栈后从文件头中指定入口的开始执行。

  显然可执行文件的格式是操作系统工作的写照,因为可执行文件头部的的数据是供操作系统装载文件用的,不同的操作系统的运行方式各不相同,所以造成了可执行文件的格式的各不行同。

原文地址:https://www.cnblogs.com/good/p/2547897.html