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

📄 chap8-5-5-1.htm.primary

📁 加密与解密,软件加密保护技术与解决方案,看雪文档!
💻 PRIMARY
📖 第 1 页 / 共 3 页
字号:
<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>
<p align="center"><b>  5、ASProtect保护</b></p>
<table border="1" width="80%" cellpadding="5" bordercolor="#111111" bgcolor="#efefef" align="center" cellspacing="0">
  <tr> 
    <td width="33%" valign="middle" align="center" class="p9" height="23"> 
      <div align="left"><span class="p9"><span class="p9"> <span class="p9">1、<span class="p9"><span class="p9"><a href="Chap8-5-5-1.htm"><span class="p9"><span class="p9"><span class="p9"><span class="p9">ASProtect 
        v0.95</span></span></span></span>保护</a></span></span></span></span></span></div>
    </td>
    <td valign="middle" align="center" class="p9" height="23" width="34%"> 
      <div align="left"><span class="p9"><span class="p9"><span class="p9"> </span>2、<span class="p9"><a href="Chap8-5-5-2.htm">ASProtect 
        v0.94b保护</a></span></span></span></div>
    </td>
    <td valign="middle" align="center" class="p9" height="23" width="33%"> 
      <div align="left"><span class="p9"><span class="p9"> 3、<a href="Chap8-5-5-3.htm"><span class="p9"><span class="p9">ASProtect 
        v0.9x</span></span></a></span></span></div>
    </td>
  </tr>
  <tr> 
    <td width="33%" valign="middle" align="center" class="p9" height="23"> 
      <div align="left"><span class="p9"><span class="p9"> </span></span>4、ASProtect 
        1.1x </div>
    </td>
    <td valign="middle" align="center" class="p9" height="23" width="34%"> 
      <div align="left"><span class="p9"><span class="p9"><span class="p9"> </span>5、ASProtect 
        1.2x </span></span></div>
    </td>
    <td valign="middle" align="center" class="p9" height="23" width="33%"> 
      <div align="left"><span class="p9"><span class="p9"> 6、</span>ASProtect 
        1.3x </span></div>
    </td>
  </tr>
</table>
<p align="center"><b>1、ASProtect v0.95保护</b></p>
<p><span class="p9">教程写作: 看雪<br>
  技术指导:D.boy 和RuFeng<br>
  写作日期:2000年5月30日 <br>
  </span><span class="p9">目标程序:ShowDep 4.0 beta 1<br>
  程序大小:Showdep.exe 为177K<br>
  程序下载:<a href="Exercise/Chap8-5-5-1.zip">ShowDep 4.0 </a><br>
  使用工具:Softice 4.05; ProcDump 1.6.2 Final; FrogsICE v0.43;Icedump 6.016</span></p>
<p class="p9">  首先忠心感谢<span class="p9">D.boy 和RuFeng</span>的热心帮助,是在他们的帮助下,我才对PE文件有一定程度的了解。我把从他们那里吸取的经验总结了一篇文章,希望对大家有所帮助。为了使初学者能更好理解这文章,本人尽量写的仔细点。</p>
<p class="p9"></p>
<p class="p9"><b>一、Import表的一些理论知识</b></p>
<p><span class="p9">在你看这篇文章之前,你应对PE文件的结构有一定了解,否则请先看看PE介绍.</span></p>
<p><span class="p9">1、现在不少软件脱壳后Import表被损坏或地址发生改变,需要我们手动找到正确的Import表来替换被破坏的Import表,并修正Import表的地址,程序才能正确执行。<br>
  <br>
  程序装载时,需要装载很多函数和DLL文件,这时程序需要判定目标函数的地址并将该函数插补到该执行文件的映像中,所需要的信息都是放在PE文件的Import表,PE文件中的每一个输入函数都明确的列于该表中。<br>
  <br>
  一般来说Import表是存放在程序的.idata块,它一般包含其他外来DLL的函数及数据信息。但也有不少程序的Import表不存在idata块中,给我们判断Import表的地址造成困难,但不要着急,只要了解Import表的结构你就能迅速定位Import表的地址。</span></p>
<p class="p9">2、Import表以一个IMAGE_IMPORT_DESCRIPTOR数组开始。每一个被PE文件隐式连结进来的DLL都有一个IMAGE_IMPORT_DESCRIPTOR。在这个数组中,没有字段指出该结构数组的项数,但它的最后一个单元是NULL,可以由此计数算出该数组的项数。IMAGE_IMPORT_DESCRIPTOR的格式如下:</p>
<p><span class="p9">image_import_descriptors结构:</span></p>
<table width="100%" cellspacing="0" height="0" bgcolor="#CCCCFF" border="1" bordercolordark="#CCCCFF" bordercolorlight="#FFFFFF" align="center">
  <tr> 
    <td class="p8" colspan="3"><span class="p9">IMAGE_IMPORT_DESCRIPTOR struct</span><span class="p9"> 
      </span></td>
  </tr>
  <tr> 
    <td class="p8" width="21%"><span class="p9"> riginalFirstThunk</span></td>
    <td class="p8" width="5%"><span class="p9">dd 0</span></td>
    <td class="p8" width="74%">该字段是一个指针数组的RVA偏移。其中每一个指针都指向一IMAGE_IMPORT_BY_NAME结构</td>
  </tr>
  <tr> 
    <td class="p8" width="21%"><span class="p9"> TimeDateStamp</span></td>
    <td class="p8" width="5%"><span class="p9">dd 0</span></td>
    <td class="p8" width="74%">时间及日期标志,在这可以忽略</td>
  </tr>
  <tr> 
    <td class="p8" width="21%"><span class="p9"> ForwarderChain</span></td>
    <td class="p8" width="5%"><span class="p9">dd 0</span></td>
    <td class="p8" width="74%">正向链结索引,在这可以忽略</td>
  </tr>
  <tr> 
    <td class="p8" width="21%" height="14"><span class="p9"> Name</span></td>
    <td class="p8" width="5%" height="14"><span class="p9">dd 0</span></td>
    <td class="p8" width="74%" height="14">以NULL结尾的ASCII字符的RVA地址,该字符串包含输入的DLL名,比如"Kernel32.dll" 
      或"USER32.DLL" <font color="#FF3366">(关键!,我们定位Import表的依据)</font></td>
  </tr>
  <tr> 
    <td class="p8" width="21%"><span class="p9"> FirstThunk</span></td>
    <td class="p8" width="5%"><span class="p9">dd 0</span></td>
    <td class="p8" width="74%">该字段是在Image_thunk_data联合结构中的RVA偏移。大多数情况下,Image_thunk_data是指IMAGE_IMPORT_BY_NAME结构的指针。如果不是一个指针的话,那它就是该功能在DLL中的序号。</td>
  </tr>
  <tr> 
    <td height="20" class="p8" colspan="3"><span class="p9">IMAGE_IMPORT_DESCRIPTOR 
      ends </span></td>
  </tr>
</table>
<p class="p9">3、为了使大家更好理解,我们以<span class="p9">ShowDep 4.0 beta的Import表为例,ShowDep 
  4.0用 ASProtect 加壳,用prodump 分析,发现没有idata段。 脱壳大师D.boy很成功分析出该软件的Import表:import 
  rav 0042D104,size 00001470 ;Image Base(基址)=00400000。</span></p>
<p><span class="p9">该软件的Import表的image_import_descriptors结构如下:<br>
  </span></p>
<table width="100%" cellspacing="0" bgcolor="#000000" align="center">
  <tr> 
    <td class="p9"><font color="#00AF00">-----SHOWDEP!.rdata+1104--------------------------dword-------------PROT---<font color="#00FFFF">(0)<font color="#00AF00">--</font></font></font></td>
  </tr>
  <tr> 
    <td class="p9"><font color="#AFAFAF">0030:0042D104 ①0002D23C ②00000000 ③00000000 
      ④0002DA8A &lt;............... ^</font></td>
  </tr>
  <tr> 
    <td class="p9"><font color="#AFAFAF">0030:0042D114 ⑤0002C070 ⑥0002D43C ⑦00000000 
      ⑦00000000 p...&lt;........... v</font></td>
  </tr>
</table>
<div align="center"><span class="p9">(图一)</span> </div>
<p><span class="p9"><span class="p9">为了解释方便,我在每个数据前加了序号。上图就是一个典型的Import表开始处的image_import_descriptors结构</span>,Import表就是以这个数组开始的一段连续内存空间,在这里大小是1470的连续空间。各项数据含义如下:</span></p>
<table width="100%" cellspacing="0" height="0" bgcolor="#CCCCFF" border="1" bordercolordark="#CCCCFF" bordercolorlight="#FFFFFF" align="center">
  <tr> 
    <td class="p8" colspan="3"><span class="p9">IMAGE_IMPORT_DESCRIPTOR struct</span><span class="p9"> 
      </span></td>
  </tr>
  <tr> 
    <td class="p8" width="21%"><span class="p9"> riginalFirstThunk</span></td>
    <td class="p8" width="5%"><span class="p9">dd 0</span></td>
    <td class="p8" width="74%"><font color="#000000">①0002D23C</font></td>
  </tr>
  <tr> 
    <td class="p8" width="21%"><span class="p9"> TimeDateStamp</span></td>
    <td class="p8" width="5%"><span class="p9">dd 0</span></td>
    <td class="p8" width="74%"><font color="#000000">②00000000 </font></td>
  </tr>
  <tr> 
    <td class="p8" width="21%"><span class="p9"> ForwarderChain</span></td>
    <td class="p8" width="5%"><span class="p9">dd 0</span></td>
    <td class="p8" width="74%"><font color="#000000">③00000000</font></td>
  </tr>
  <tr> 
    <td class="p8" width="21%" height="4"><span class="p9"> Name</span></td>
    <td class="p8" width="5%" height="4"><span class="p9">dd 0</span></td>
    <td class="p8" width="74%" height="4"><font color="#000000">④0002DA8A</font><font color="#FF3366">(关键!,我们定位Import表的依据)</font></td>

⌨️ 快捷键说明

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