我爱Aspx >> VC.Net >> PE学习笔记(一)PE学习笔记(一)
习笔记
PE 的意思就是 Portable Executable(可移植的执行体)。PE文件结构的总体层次分布图:
--------------
|DOS MZ Header |
|--------------|
|DOS Stub |
|--------------|
|PE Header |
|--------------|
|Section Table |
|--------------|
|Section 1 |
|--------------|
|Section 2 |
|--------------|
|Section ... |
|--------------|
|Section n |
--------------
一、PE文件格式的概要
1.1、DOS MZ Header:
所有 PE文件(甚至32位的 DLLs)必须以一个简单的 DOS MZ Header 开始。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随 MZ Header 之后的 DOS Stub。
1.2、DOS Stub:
DOS Stub(存根)实际上是个有效的 MS-DOS .EXE 或者.COM 程序(如果文件格式不对会报错),在不支持 PE文件格式的操作系统中,它将通过简单调用中断21h服务9来显示字符串"This program cannot run in DOS mode"或者根据程序员自己的意图实现完整的 DOS 代码。它的大小一般不能确定。利用链接器(linker)的 /STUB:filename 选项可以替换这个程序。
1.3、PE Header:
紧接着 DOS Stub 的是 PE Header。PE Header 是PE相关结构 IMAGE_NT_HEADERS 的简称,其中包含了许多PE装载器用到的重要域。执行体在支持PE文件结构的操作系统中执行时,PE装载器将从 DOS MZ Header (IMAGE_DOS_HEADER)中找到 PE Header 的起始偏移量。因而跳过了DOS Stub 直接定位到真正的文件头PE Header。
【我对这篇文章有话说?】
内存管理之二[05-21]
《WTL起步 - 玩转图形界面》目录[05-21]
《WTL Makes UI Programming a J..[05-21]
网络计算[05-21]
读深入浅出MFC的一节笔记[05-21]
如何关闭本地和远程NT/2000系统进..[05-21]
Thinking again in C++(一)常量..[05-21]
内存管理之一[05-21]
契约思想的一个反面案例[05-21]
什么是契约——Eiffel的观点[05-21]