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

📄 chap8-1-4.htm.primary

📁 加密与解密,软件加密保护技术与解决方案,看雪文档!
💻 PRIMARY
字号:
<html>
<head>
<title>Crack Tutorial</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="style/css.css" type="text/css">
<link rel="stylesheet" href="../STYLE/Css.css" type="text/css">
</head>

<body bgcolor="white" text="#000000" link="#004080" vlink="#004080" background="../image/Back.gif">
<p><a href="../catalog.htm">目录</a>>>第8章</p>
<p align="center" class="shadow1Copy"><b class="p3">第8章 压缩与脱壳</b></p>
<table width="80%" border="0" cellspacing="0" cellpadding="3" align="center" bgcolor="#bcbcbc" bordercolor="#111111" class="shadow1">
  <tr> 
    <td class="shadow1" width="20%"> 
      <div align="center"><a href="Chap8-1.htm"><font color="#FFFFFF">第一节 PE文件格式</font></a></div>
    </td>
    <td class="shadow1" width="20%"> 
      <div align="center"><a href="Chap8-2.htm"><font color="#FFFFFF">第二节 认识脱壳</font></a></div>
    </td>
    <td class="shadow1" width="20%"> 
      <div align="center"><a href="Chap8-3-1.htm"><font color="#FFFFFF">第三节 自动脱壳</font></a></div>
    </td>
    <td class="shadow1" width="20%"> 
      <div align="center"><a href="Chap8-4.htm"><font color="#FFFFFF">第四节 手动脱壳</font></a></div>
    </td>
    <td class="shadow1" width="20%"> 
      <div align="center"><a href="Chap8-5.htm"><font color="#FFFFFF">第五节 脱壳高级篇</font></a></div>
    </td>
  </tr>
</table>
<p align="center"><span class="p9"><b>第一节 PE文件格式</b></span></p>
<table width="80%" border="1" align="center" bgcolor="#efefef" cellpadding="5" cellspacing="0" bordercolor="#111111">
  <tr> 
    <td>1、<a href="Chap8-1-1.htm">PE文件格式一览 </a></td>
    <td>2、<a href="Chap8-1-2.htm">检验PE文件的有效性 </a> </td>
    <td><span class="p9"><span class="p9">3、<span class="p9"><a href="Chap8-1-3.htm">File 
      Header(文件头)</a></span></span></span></td>
    <td>4、<a href="Chap8-1-4.htm">Optional Header</a></td>
  </tr>
  <tr> 
    <td>5、<a href="Chap8-1-5.htm">Section Table</a></td>
    <td>6、<a href="Chap8-1-6.htm">Import Table</a></td>
    <td>7、<a href="Chap8-1-7.htm">Export Table</a></td>
    <td>&nbsp;</td>
  </tr>
</table>
<h1 align=center><font color="#000000" face="Arial, Helvetica, sans-serif">PE</font><font color="#000000">教程</font><font color="#000000" face="Arial, Helvetica, sans-serif">4: 
  Optional Header</font></h1>
<p><font size="2" color="#000000">我们已经学习了关于</font><font face="MS Sans Serif" size="2" color="#000000"> 
  DOS header </font><font size="2" color="#000000">和 </font><font face="MS Sans Serif" size="2" color="#000000">PE 
  header </font><font size="2" color="#000000">中部分成员的知识。这里是</font><font face="MS Sans Serif" size="2" color="#000000"> 
  PE header </font><font size="2" color="#000000">中最后、最大或许也是最重要的成员,</font><font face="MS Sans Serif" size="2" color="#000000">optional 
  header</font><font size="2" color="#000000">。</font></p>
<p><font size="2" color="#000000">回顾一下,</font><font face="MS Sans Serif" size="2" color="#000000">optional 
  header </font><font size="2" color="#000000">结构是</font><font face="MS Sans Serif" size="2" color="#000000"> 
  <b>IMAGE_NT_HEADERS</b> </font><font size="2" color="#000000">中的最后成员。包含了</font><font face="MS Sans Serif" size="2" color="#000000">PE</font><font size="2" color="#000000">文件的逻辑分布信息。该结构共有</font><font face="MS Sans Serif" size="2" color="#000000">31</font><font size="2" color="#000000">个域,一些是很关键,另一些不太常用。这里只介绍那些真正有用的域。</font></p>
<p><font size="2" color="#000000">这儿有个关于</font><font face="MS Sans Serif" size="2" color="#000000">PE</font><font size="2" color="#000000">文件格式的常用术语</font><font face="MS Sans Serif" size="2" color="#000000">: 
  RVA <br>
  RVA </font><font size="2" color="#000000">代表相对虚拟地址。</font><font face="MS Sans Serif" size="2" color="#000000"> 
  知道什么是虚拟地址吗?相对那些简单的概念而言,RVA有些晦涩。简言之,RVA是虚拟空间中到参考点的一段距离。我打赌您肯定熟悉文件偏移量: RVA就是类似文件偏移量的东西。当然它是相对虚拟空间里的一个地址,而不是文件头部。举例说明,如果PE文件装入虚拟地址(VA)空间的400000h处,且进程从虚址401000h开始执行,我们可以说进程执行起始地址在RVA 
  1000h。每个RVA都是相对于模块的起始VA的。<br>
  为什么PE文件格式要用到RVA呢? 这是为了减少PE装载器的负担。因为每个模块多有可能被重载到任何虚拟地址空间,如果让PE装载器修正每个重定位项,这肯定是个梦魇。相反,如果所有重定位项都使用RVA,那么PE装载器就不必操心那些东西了: 
  它只要将整个模块重定位到新的起始VA。这就象相对路径和绝对路径的概念: RVA类似相对路径,VA就象绝对路径。</font></p>
<table border=1 cellpadding=2>
  <tbody> 
  <tr> 
    <th bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF"><b>Field</b></font></th>
    <th bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF">Meanings</font></th>
  </tr>
  <tr> 
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF"><b>AddressOfEntryPoint</b></font></td>
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF">PE装载器准备运行的PE文件的第一个指令的RVA。若您要改变整个执行的流程,可以将该值指定到新的RVA,这样新RVA处的指令首先被执行。</font></td>
  </tr>
  <tr> 
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF"><b>ImageBase</b></font></td>
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF">PE文件的优先装载地址。比如,如果该值是400000h,PE装载器将尝试把文件装到虚拟地址空间的400000h处。字眼"优先"表示若该地址区域已被其他模块占用,那PE装载器会选用其他空闲地址。</font></td>
  </tr>
  <tr> 
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF"><b>SectionAlignment</b></font></td>
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF">内存中节对齐的粒度。例如,如果该值是4096 
      (1000h),那么每节的起始地址必须是4096的倍数。若第一节从401000h开始且大小是10个字节,则下一节必定从402000h开始,即使401000h和402000h之间还有很多空间没被使用。</font></td>
  </tr>
  <tr> 
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF"><b>FileAlignment</b></font></td>
    <td align=middle bgcolor=#006666> 
      <p><font face="MS Sans Serif" size="2" color="#FFFFFF">文件中节对齐的粒度。例如,如果该值是(200h),,那么每节的起始地址必须是512的倍数。若第一节从文件偏移量200h开始且大小是10个字节,则下一节必定位于偏移量400h: 
        即使偏移量512和1024之间还有很多空间没被使用/定义。</font></p>
    </td>
  </tr>
  <tr> 
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF"><b>MajorSubsystemVersion<br>
      MinorSubsystemVersion </b></font></td>
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF">win32子系统版本。若PE文件是专门为Win32设计的,该子系统版本必定是4.0否则对话框不会有3维立体感。</font></td>
  </tr>
  <tr> 
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF"><b>SizeOfImage</b></font></td>
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF">内存中整个PE映像体的尺寸。它是所有头和节经过节对齐处理后的大小。 
      </font></td>
  </tr>
  <tr> 
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF"><b>SizeOfHeaders</b></font></td>
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF">所有头+节表的大小,也就等于文件尺寸减去文件中所有节的尺寸。可以以此值作为PE文件第一节的文件偏移量。</font></td>
  </tr>
  <tr> 
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF"><b>Subsystem</b></font></td>
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" size="2" color="#FFFFFF">NT用来识别PE文件属于哪个子系统。 
      对于大多数Win32程序,只有两类值: Windows GUI 和 Windows CUI (控制台)。</font></td>
  </tr>
  <tr> 
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" 
      size=2><b><font color="#FFFFFF">DataDirectory</font></b></font></td>
    <td align=middle bgcolor=#006666><font face="MS Sans Serif" 
      size=2>一</font><font color=#ccffcc face="MS Sans Serif" 
      size=2><b>IMAGE_DATA_DIRECTORY </b></font><font face="MS Sans Serif" 
      size=2>结构数组。每个结构给出一个重要数据结构的RVA,比如引入地址表等。</font></td>
  </tr>
  </tbody> 
</table>
<p align=center><font size="2" color="#000000"><b>翻译:</b></font><font face="MS Sans Serif" size="2" color="#000000"><b>iamgufeng 
  [</b></font><font color="#000000"><a href="http://win32asm.cjb.net/" target="_blank"><font 
face="MS Sans Serif" size=2><b>Iczelion's Win32 Assembly Homepage</b></font></a><font face="MS Sans Serif" 
size=2><b>]</b><strong>[</strong></font><a href="http://asm.yeah.net/" target="_blank"><font 
face="MS Sans Serif" size=2><strong>LuoYunBin's Win32 ASM Page</strong></font></a><font face="MS Sans Serif" 
size=2><strong>]</strong></font></font></p>
<p align="center"><a href="../Catalog.htm"><img src="../image/navtoc.gif" width="84" height="23" border="0"></a><a href="Chap8-1-3.htm"><img src="../image/Navprev.gif" width="80" height="23" border="0"></a><a href="Chap8-1-5.htm"><img src="../image/navnext.gif" width="83" height="23" border="0"></a></p>
<hr width=735>
<div align="center"><span class="p9"><font size="2"><span class="p9"><font size="2"><span class="p9">Copyright 
  &copy; 2000-2001 <a href="http://www.pediy.com/">KanXue Studio</a> All Rights 
  Reserved.</span></font></span></font></span></div>
</body>
</html>

⌨️ 快捷键说明

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