Execute的全称,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows *** 作系统上的程序文件(可能是间接被执行,如DLL)。其实本质就是可执行的符合某种规定格式的二进制文件
1、EXE文件是属于PE文件的一种。
2、PE文件的全称是Portable Executable,意为可移植的执行体是,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows *** 作系统上的程序文件(可能是间接被执行,如DLL)
3、一个 *** 作系统的可执行文件格式在很多方面是这个系统的一面镜子。虽然学习一个可执行文件格式通常不是一个程序员的首要任务,但是可以从这其中学到大量的知识。
4、 Microsoft 的所有基于win32系统(如winnt,win9x)的可移植可执行(PE)文件格式的详细介绍。在可预知的未来,包括Windows2000, PE文件格式在 MicroSoft 的 *** 作系统中扮演一个重要的角色。
5、如果在使用 Win32 或 Winnt ,那么已经在使用 PE 文件了。甚至只是在 Windows3.1 下使用 Visual C++编程,使用的仍然是 PE 文件(Visual C++ 的 32 位MS-DOS扩展组件用这个格式)。简而言之,PE 格式已经普遍应用,并且在不短的将来仍是不可避免的。
Windows *** 作系统家族增加的Windows NT为开发环境和应用程序本身带来了很大的改变,这之中一个最为重大的当属PE文件格式了。新的PE文件格式主要来自于UNIX *** 作系统所通用的COFF 规范,同时为了保证与旧版本MS-DOS及Windows *** 作系统的兼容,PE文件格式也保留了MS-DOS中那熟悉的MZ头部。在Windows下,程序和库都是PE(Portable Excutable)格式文件,可以被内存映射到一个进程中。
加载一个Windows可执行程序或者DLL与加载一个动态链接的ELF程序相似,尽管在Windows下动态链接器是 *** 作系统内核的一部分。
PE文件可以包含有重定位项。通常一个可执行程序不会包含可重定位项,因此必须将它们映射到在链接时确定的地址上。DLL都包含有重定位项,并且在它们被链接进来的地址空间无效的时候都会被重定位(微软将运行时重定位称为rebasing)。
所有的PE文件,包括可执行程序和DLL,都有一个入口点,在DLL被加载、被卸载,以及每一次进程的线程attach或deattach这个DLL的时候,加载器都会调用DLL的入口点(每一次加载器都会传递一个参数说明调用原因)。这就可以提供类似ELF的.init和.fini区段的钩子代码来实现初始化和终结 *** 作。
简而言之,PE头就是windows中特有的可执行文件头.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)