1. PE程序是什么来的
WinPE只是有限功能的Mini操作系统
它是微软提供给OEM厂商用来开发驱动和调试硬件的一个命令行方式(有WIN2000/XP/2003等不同版本),实质上就是只提供了WINNT基本内核和基本驱动的操作系统,主要特点是:只有100多M,可直接在光盘上运行,无须访问硬盘。以前WINPE并不出名,后来,第三方软件ERD(仿真WINXP界面)的出现,改变了WINPE的命运,使其一举起成名,
很多并不是为 PE 准备的软件也是可以在 PE 中运行的,用一个笨办法来判断一个普通的绿软是否可以直接在 PE 中运行,启动 PE 环境,找到该软件所在目录,复制一份备份,然后将该目录和目录下的所有文件属性改为只读,直接双击目录内的可执行文件,看能否运行,运行后各项功能都使用一下看是否正常,如无异常,则可按上面的方法简单加入。
2. 程序编程里的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中特有的可执行文件头.