• 您的位置我爱Aspx >> VC.Net >> PE学习笔记(一)
  • PE学习笔记(一)

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:47:31  关键字:
  • 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。

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:提醒初学者注意 send(sendto) recv(recvfrom) 中的 参数flags
    下一篇:内存管理之二
  • 相关文章