到现在为止,我们已经完成的足够的代码来从硬盘上读出一个文件了。我们的操作系统内核将以一个DLL文件的形式放在硬盘上。而RMOSLDR会负责把这个内核文件读进来。但是现在还有一个问题。既然内核是一个DLL文件,那么,我们该如何加载一个DLL文件呢?
这就牵涉到Windows上可执行文件的格式。Windows上的可执行文件格式被称为PE(Portable Executable)格式。PE格式可以认为是COFF(Common Object File Format)格式的一个扩展。PE是一种可移植的文件格式,它可以在多种操作系统和硬件上运行。在Windows NT操作系统上,PE如今支持IA32, IA64(安腾),X86-64架构。在Windows 2000前的Windows NT早期版本也曾支持MIPS和Alpha架构。如今在Windows CE上,PE仍然支持MIPS和ARM架构。前些年当.Net被推出时,微软对PE格式做了一些扩展增加了对.NET的支持。
一个PE格式文件中包含了一些文件头和其他数据结构,这些数据结构中保存了足够的信息来进行诸如动态连接和重定位等工作。在后面一系列文章中将逐一介绍PE文件中的各个数据结构,以及执行重定位和动态链接的方法。
PE文件格式
最新推荐文章于 2025-05-02 15:44:26 发布