PE文件格式(1)
2007-01-14 20:15:09 来源:WEB开发网'MinorImageVersion'.许多连接器不正确设置这些信息。
下面2个16位的字是期望的子系统版本,'MajorSubsystemVersion和MinorSubsystemVersion.这个必须是Win32版本或者POSIX版本。该版本需要正确提供,因为它被检查并使用。如果程序是Win32-GUI并运行在NT4,子系统版本不是4.0,对话框不是3D效果。
然后是Win32VersionValue,32位。大部分情况下是0。
下面是32位的映像需要的内存数量'SizeOfImage'.是所有的头和节的总和,如果节已经对齐。它是给加载器的线索,需要多少页加载映像。
下面一个是32位的所有头的总和,包括数据目录和节头。'SizeOfHeaders'.它也是才文件开始到第一节的偏移量。
然后是32位的校验码'CheckSum'.对当前版本的NT,只校验映像是否是NT驱动程序。对于其他可执行文件类型,不必提供这个码,可能为0。
然后是16的子系统Subsystem'表明在什么系统上运行:
IMAGE_SUBSYSTEM_NATIVE(1)执行文件不需要子系统,用于驱动程序。
IMAGE_SUBSYSTEM_WINDOWS_GUI(2)映像是Win32图形程序可以打开控制台
IMAGE_SUBSYSTEM_WINDOWS_CUI(3)映像是Win32控制台程序,可以得到缺省控制台。
IMAGE_SUBSYSTEM_OS2_CUI(5)映像是OS/2控制台,程序是OS/2格式。
IMAGE_SUBSYSTEM_POSIX_CUI(7)映像使用POSIX控制台子系统
Windows95可执行文件总是使用Win32subsystem,于是合法值是2和3。
下面是16位,DllCharacteristics,表明是否是DLL,如果0位置1,DLL被通知进程结合。位1置1,DLL被通知线程脱离。位2置1,DLL被通知线程结合。位3置1,DLL被通知进程脱离。
下面4个32位预留堆栈大小'SizeOfStackReserve',提交的堆栈大小'SizeOfStackCommit',预留的堆的大小'SizeOfHeapReserve'和提交的的堆的的大小'SizeOfHeapCommit'.
更多精彩
赞助商链接