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

📄 chap8-4-2.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>第四节 手动脱壳</b></span></p>
<table border="1" width="80%" cellpadding="5" bordercolor="#111111" bgcolor="#efefef" align="center" cellspacing="0">
  <tr> 
    <td width="50%" valign="middle" align="center" class="p9" height="23"> 
      <div align="left"><span class="p9"><span class="p9">  <span class="p9">   </span> <span class="p9">1、<a href="Chap8-4-1.htm">基本知识</a></span></span></span></div>
    </td>
    <td colspan="2" valign="middle" align="center" class="p9" height="23" width="50%"> 
      <div align="left"><span class="p9"><span class="p9">  <span class="p9">   </span> </span></span>2、<a href="Chap8-4-2.htm">UPX 
        V1.01的壳</a></div>
    </td>
  </tr>
  <tr> 
    <td width="50%" valign="middle" align="center" class="p9" height="23"> 
      <div align="left"><span class="p9"><span class="p9">  <span class="p9">   </span> </span></span>3、<a href="Chap8-4-3.htm">Shrinker 
        v3.4 的壳</a></div>
    </td>
    <td colspan="2" valign="middle" align="center" class="p9" height="23" width="50%"> 
      <div align="left"><span class="p9"><span class="p9">  <span class="p9">   </span> </span></span>4、<a href="Chap8-4-4.htm">ASPack 
        v1.083</a></div>
    </td>
  </tr>
</table>
<p align="center"><b>2、UPX V1.01的壳</b></p>
<p><span class="p9">目标程序: 用 UPX V1.01压缩过的<a href="Exercise/chap8-4-2.zip">Notepad.exe</a><br>
  </span></p>
<p><b><span class="p9">方法一、使用TRW2000来脱壳</span></b></p>
<p><span class="p9"><span class="p9">★</span>使用工具</span></p>
<blockquote> 
  <p><span class="p9">TRW2000 <br>
    FileInfo <br>
    </span></p>
</blockquote>
<p><span class="p9"><span class="p9">★确定壳的种</span>类 </span></p>
<blockquote> 
  <p><span class="p9">拿到这软件后,可用工具FileInfo、gtw、TYP32等侦测文件类型的工具来看看是何种软件压缩的,在这我们以FileInfo 
    为例,把目标文件复制到FileInfo目录下,在资源管理器下双击FileInfo,再按回车,你将看到报告出来:告诉你这是UPX1.01压缩的软件。</span></p>
</blockquote>
<p><span class="p9">★入口点(Entry Point)确定 </span></p>
<p class="p9">◇利用跟踪分析来确定入口点</p>
<blockquote> 
  <p> <span class="p9">决大多数 PE 加壳程序在被加密的程序中加上一个或多个段。 所以看到一个跨段的 JMP 就有可能是了。 UPX 
    用了一次跨段的 JMP 。 就是你一步步跟踪时会看到代码有一突跃,一般再跟据领空文件名的变化,就能确定入口点了。运行TRW2000并装载目标程序,然后LOAD,你将中断在主程序入口处:此时合理按F10、F7及F12一直向前走,注意此时领<span class="p9">空会是:NOTUPX!UPX1+2xxx.</span></span></p>
  <p class="p9">在你跟踪过程中会出现如下代码:</p>
  <div align="center"></div>
  <p><span class="p9">该程序的具体情况如下:</span></p>
  <table width="80%" border="0" cellspacing="0" bgcolor="#FFFEF0">
    <tr bgcolor="#F5F8FE"> 
      <td class="p9"> 
        <p><span class="p9">XXX:XXXXXXXX 60 <font color="#FF3333">PUSHAD</font> 
          ;所有的寄存器进栈<br>
          XXX:XXXXXXXX BE2EFD4200 MOV ESI, XXXXXXXX ;将下一条指令送入进行解压<br>
          XXX:XXXXXXXX 8DBED21FFDFF LEA EDI, [ESI+XXXXXXXX]</span></p>
        <span class="p9">.......<br>
        ....... &lt;---- 按F10跟踪 ;-P</span> 
        <p><span class="p9">XXX:XXXXXXXX FF96A8C90400 CALL [ESI+XXXXXXXX]<br>
          XXX:XXXXXXXX 61 <font color="#FF3333">POPAD</font> ;所有寄存器出栈<br>
          XXX:XXXXXXXX E9A44AFBFF JMP 00401000 ;跳到程序真正入口点(OEP),文件完全解压。</span></p>
      </td>
    </tr>
  </table>
</blockquote>
<blockquote> 
  <p><span class="p9"><font color="#000000" class="p9">0137:40ddbe popa</font></span><font color="#000000" class="p9"><br>
    0137:40ddf jmp 00401000 &lt;-此行己完全解压结束,将要跳到记事本程序入口点执行程序(注意此处的一个大的突跃)。<br>
    ........................<br>
    0137:401000 push ebp &lt;-完全解压后的记事本程序第一行</font></p>
  <p><span class="p9"><span class="p9">因此<span class="p9">入口点(Entry Point)</span>找到为:401000</span></span></p>
</blockquote>
<p><span class="p9">◇<span class="p9">利用TRW2000特有命令PNEWSEC</span></span></p>
<blockquote> 
  <p><span class="p9"><span class="p9">TRW2000也是一款优秀的脱壳工具,有许多特有的命令对脱壳很有帮助,在此时用PNEWSEC命令也可方便找到入口点。<br>
    运行TRW2000并装载目标程序,然后LOAD,你将中断在主程序入口处,下令:PNEWSEC<br>
    等上一段时间,程序将中断在入口点处。 </span></span></p>
</blockquote>
<p><span class="p9"><span class="p9">◇</span>用冲击波2000</span></p>
<blockquote> 
  <p><span class="p9">冲击波2000是D.boy开发的一个专门查找加壳软件入口点的工具,先运行冲击波2000,点击Track按钮:开始进行跟踪,然后运行要跟踪的程序, 
    找到入口点后,会在Enter point 显示。可是用这个记事本程序却无效。</span></p>
</blockquote>
<p><span class="p9">★dump取内存中己脱壳的文件</span></p>
<blockquote> 
  <p><span class="p9">不管你用何种方法找到入口点,首先要来到入口点一行:</span></p>
  <p><span class="p9"><font color="#000000" class="p9">0137:401000 push ebp </font></span></p>
  <p><span class="p9">执行<font color="#000000">命令</font><font color="#FF3366">makepe 
    路径/文件名</font>或<font color="#FF3366">pedump 路径/文件名</font></span></p>
  <p><span class="p9">就这样脱壳成功</span>。</p>
  <p><b class="p8">注:TRW2000的makepe重建的PE文件可跨平台运行,pedump抓取的文件却不可。</b></p>
</blockquote>
<p><b><span class="p9">方法二、用SOFTICE来脱壳</span></b></p>
<p><span class="p9"><span class="p9"><span class="p9">★</span>使用工具</span></span></p>
<blockquote> 
  <p><span class="p9"><span class="p9">TRW2000 <br>
    FileInfo </span><br>
    ProcDump </span></p>
</blockquote>
<p><span class="p9"><span class="p9">★入口点(Entry Point)确定 </span></span></p>
<p><span class="p9">◇利用跟踪分析来确定入口点</span></p>
<blockquote> 
  <p><span class="p9">方法同TRW2000。</span></p>
</blockquote>
<p><span class="p9">★du<span class="p9">mp取内存中己脱壳的文件</span></span></p>
<blockquote> <span class="p9"><font color="#000000">0137:40ddf jmp 00401000</font> 
  </span> 
  <p class="p9"><span class="p9">现在这一行,键入以下命令: <br>
    a eip (然后按回车)<br>
    jmp eip (然后按回车) </span><br>
    按下F5 </p>
  <p class="p9">这样将<font color="#000000">改变0137:40ddf行</font>的代码. 你会注意到在键入"jmp 
    eip"并按下回车后,<font color="#000000">40ddf</font>的指令现在是一个jmp.这将有效地使程序"暂停"(有点类似TRW2000的suspend命令). 
    按下F5使你回到window。</p>
  <p class="p9"><span class="p9">运行ProcDump,在Task的列表中的第一个list上点击鼠标右键,然后选择&quot;Refresh 
    list&quot;. 在Task列表中找到notepad.exe,在它的上面点击鼠标右键. 然后,选中&quot;Dump (Full)&quot;,给脱壳的程序起名存盘. 
    再在notepad.exe上点击鼠标右键,然后选中&quot;Kill Task&quot;. </span></p>
  <p class="p9"><b class="p8">注:用此方法抓取的文件不可跨平台运行。</b></p>
</blockquote>
<p><span class="p9">★修正刚dump取的文件的入口点</span></p>
<blockquote> 
  <p><span class="p9"> 脱壳的notepad.exe程序入口是00401000. <br>
    再次使用ProcDump的PE Editor功能, 打开已脱壳的notepad.exe. </span></p>
  <p><span class="p9">在&quot;Header Infos&quot;一项, 你会看见程序Entry Point(入口值)是0000DC70,这当然是错误的. 
    如果你试着不改动这个入口值而运行脱壳后的notepad.exe,程序将无法运行. </span></p>
  <p><span class="p9">在 Procdump可看到ImageBase =00400000,我们上面跟踪找到的入口值的RVA是00401000,因为:虚拟地址(RVA)=偏移地址+基址(ImageBase 
    ),因此</span></p>
  <p><span class="p9">Entry Poin=00401000-00400000=1000,改变入口值为1000,点击"OK". </span></p>
  <p><span class="p9">现在, 运行脱壳后的notepad.exe吧,它应该正常运行了。</span> </p>
</blockquote>
<p align="center"><a href="../Catalog.htm"><img src="../image/navtoc.gif" width="84" height="23" border="0"></a><a href="Chap8-4-1.htm"><img src="../image/Navprev.gif" width="80" height="23" border="0"></a><a href="Chap8-4-3.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 + -