⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiurl pe 格式学习总结(一)-- pe文件概述.htm

📁 关于win2000核心编程的文章
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0062)http://jiurl.cosoft.org.cn/jiurl/document/jiurlpe/jiurlpe1.htm -->
<HTML><HEAD><TITLE>JIURL's PE 1</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content=黑客,安全,网络,编程,黑客软件,安全软件,hacker,UNIX,Linux,FreeBSD name=keywords>
<META content=黑客,安全,网络,编程,黑客软件,安全软件,hacker,UNIX,Linux,FreeBSD name=description>
<STYLE type=text/css>.title {
	FONT-FAMILY: "黑体", Arial, sans-serif; FONT-SIZE: 21px; FONT-WEIGHT: bold; LINE-HEIGHT: 48px; TEXT-DECORATION: none
}
.author {
	FONT-FAMILY: "宋体"; FONT-SIZE: 12px; LINE-HEIGHT: 16px
}
.content {
	FONT-SIZE: 14px; LINE-HEIGHT: 20px
}
</STYLE>

<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY bgColor=#f7f7f7 topMargin=5>
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 height=29 width="96%">
  <TBODY>
  <TR>
    <TD class=title height=41 width="100%">
      <P align=center><FONT face=宋体><B>JIURL PE 格式学习总结(一)-- 
    PE文件概述</B></FONT></P></TD></TR></CENTER>
  <TR>
    <TD class=author height=9 width="100%">
      <P align=center>作者: <A href="mailto:jiurl@mail.china.com">JIURL</A> 
  </P></TD></TR>
  <TR>
    <TD class=author height=6 width="100%">
      <P 
      align=center>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      主页: <A href="http://jiurl.yeah.net/">http://jiurl.yeah.net/</A> </P></TD></TR>
  <TR>
    <TD class=author height=2 width="100%">
      <P align=center>&nbsp;&nbsp;&nbsp; 日期: 2003-4-23 
</P></TD></TR></TBODY></TABLE></DIV>
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 height=1 width="96%">
  <TBODY>
  <TR>
    <TD height=1 width="100%">
      <HR color=#396da5 SIZE=3>
    </TD></TR></TBODY></TABLE></CENTER></DIV>
<DIV align=center>
<TABLE border=0 cellPadding=0 cellSpacing=0 class=content height=3194 
width="96%">
  <TBODY>
  <TR>
    <TD height=5500 vAlign=top width="131%"><B>零 前言</B> 
      <P>&nbsp;&nbsp;&nbsp; PE格式,是Windows的可执行文件的格式。Windows中的 
      exe文件,dll文件,都是PE格式。PE 就是Portable Executable 的缩写。Portable 
      是指对于不同的Windows版本和不同的CPU类型上PE文件的格式是一样的,当然CPU不一样了,CPU指令的二进制编码是不一样的。只是文件中各种东西的布局是一样的。</P>
      <P align=center><IMG border=0 height=411 src="" width=731>&nbsp;</P>
      <P align=center>图 1.1</P>
      <P>&nbsp;&nbsp;&nbsp; 图1.1是 JIURL PEDUMP 打开 Win2K 中的 explorer.exe 
      的截图。JIURL PEDUMP 是我写的一个小工具,从文件开始的 Dos Header 一直到 Section 
      Table,打开PE文件之后,点击相应结构,就会高亮显示文件中相应的部分。不过没有Sections。对了解 PE 
      格式有所帮助,可以很好的配合后面的介绍。可以到我的主页 <A 
      href="http://jiurl.yeah.net/">http://jiurl.yeah.net/</A> 上下载。</P>
      <P><B>一&nbsp;&nbsp; PE文件格式概述</B></P>
      <P>PE文件结构的总体层次分布如下所示</P>
      <P align=center>&nbsp;--------------<BR>|DOS MZ Header 
      |<BR>|--------------|<BR>|DOS Stub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      |<BR>|--------------|<BR>|PE Header&nbsp;&nbsp;&nbsp;&nbsp; 
      |<BR>|--------------|<BR>|Section Table |<BR>|--------------|<BR>|Section 
      1&nbsp;&nbsp;&nbsp;&nbsp; |<BR>|--------------|<BR>|Section 
      2&nbsp;&nbsp;&nbsp;&nbsp; |<BR>|--------------|<BR>|Section 
      ...&nbsp;&nbsp; |<BR>|--------------|<BR>|Section 
      n&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&nbsp;--------------</P>
      <P align=left> </P>
      <P align=left>1.1 DOS Header</P>
      <P align=left>&nbsp;&nbsp;&nbsp; PE文件最开始是一个简单的 DOS MZ header,它是一个 
      IMAGE_DOS_HEADER 结构。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随 MZ Header 之后的 
      DOS Stub。</P>
      <P align=left>&nbsp;1.2&nbsp;&nbsp;DOS Stub&nbsp;&nbsp;&nbsp;</P>
      <P align=left>&nbsp;&nbsp;&nbsp; DOS Stub 是一个有效的 DOS 程序。当程序在DOS下运时,输出象 
      "This program cannot be run in DOS mode" 这样的提示。在 图1.1中就可以看到字符串 "This 
      program cannot be run in DOS mode"。这是编译器生成的默认stub程序。你也可以通过链接选项 
      /STUB:<I>filename </I>指定任何有效的MS-DOS可执行文件来替换它。</P>
      <P align=left>1.3 PE Header</P>
      <P align=left>&nbsp;&nbsp;&nbsp; 紧接着 DOS Stub 的是 PE Header。它是一个 
      IMAGE_NT_HEADERS 
      结构。其中包含了很多PE文件被载入内存时需要用到的重要域。执行体在支持PE文件结构的操作系统中执行时,PE装载器将从 DOS MZ header 
      中找到 PE header 的起始偏移量。因而跳过了 DOS stub 直接定位到真正的文件头 PE header。</P>
      <P align=left>1.4 Section Table</P>
      <P align=left>&nbsp;&nbsp;&nbsp; PE Header 接下来的数组结构 Section Table 
      (节表)。如果PE文件里有5个节,那么此 Section Table 
      结构数组内就有5个成员,每个成员包含对应节的属性、文件偏移量、虚拟偏移量等。图1中的节表有4个成员。</P>
      <P align=left>1.5 Sections</P>
      <P align=left>&nbsp;&nbsp;&nbsp; PE文件的真正内容划分成块,称之为sections(节)。Sections 
      是以其起始位址来排列,而不是以其字母次序来排列。通过节表提供的信息,我们可以找到这些节。图1.1所示的 explorer.exe 
      中有4个节。程序的代码,资源等等就放在这些节中。</P>
      <P><B>二&nbsp; PE文件格式中的结构及其作用</B></P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -