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

📄 chap6-2-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>>>第6章</p>
<p align="center" class="shadow1Copy"><b class="p3">第6章 软件保护技术</b></p>
<table width="80%" border="0" cellspacing="0" cellpadding="3" align="center" bgcolor="#bcbcbc" bordercolor="#111111" class="shadow1">
  <tr> 
    <td class="shadow1" width="25%"> 
      <div align="center"><a href="Chap6-1.htm"><font color="#FFFFFF">第一节 常见保护技巧</font></a></div>
    </td>
    <td class="shadow1" width="25%"> 
      <div align="center"><a href="Chap6-2.htm"><font color="#FFFFFF">第二节 反跟踪技术</font></a></div>
    </td>
    <td class="shadow1" width="25%"> 
      <div align="center"><a href="Chap6-3.htm"><font color="#FFFFFF">第三节 加密算法</font></a></div>
    </td>
    <td class="shadow1" width="25%"> 
      <div align="center"><a href="Chap6-4.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="33%" valign="middle" align="center" class="p9" height="23"> 
      <div align="left" class="p"><span class="p9"><span class="p9">   <span class="p9">1、<a href="Chap6-2-1.htm">Anti-Debug</a></span></span></span></div>
    </td>
    <td width="33%" valign="middle" align="center" class="p9" height="23"> 
      <div align="left"><span class="p9"><span class="p9">   </span>2、<a href="Chap6-2-2.htm">Anti-静态分析</a></span></div>
    </td>
    <td width="34%" valign="top" class="p9" height="23"> 
      <div align="left"><span class="p9"><span class="p9">  <font color="#000000"> </font></span>3、<a href="Chap6-2-3.htm">Anti-Dump</a><font color="#000000"></font></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>4、<a href="Chap6-2-4.htm">CRC简介</a></span></div>
    </td>
    <td width="33%" valign="middle" align="center" class="p9" height="23"> 
      <div align="left"><span class="p9"><span class="p9">  <font color="#000000"> </font></span>5、<a href="Chap6-2-5.htm">SEH技术</a></span></div>
    </td>
    <td width="34%" valign="top" class="p9" height="23"> 
      <div align="left"></div>
    </td>
  </tr>
</table>
<p align="center"><span class="p9"><span class="p9"><span class="p9"><b>2、Anti-静态分析</b></span></span></span></p>
<p>1.死循环语句<br>
  类型:对付W32Dasm<br>
  平台:Windows9x 、Windows NT<br>
  原理:下面是故意在程序中插入的一个死循环,可能会使W32Dasm的某些版本停止响应:</p>
<blockquote>
  <p>0401000 JMP 00401005<br>
    ……<br>
    00401005 JMP 00401000</p>
</blockquote>
<p></p>
<p> 对策:W32Dasm进入死循环后,用Bpx hmempcy设断,来到死循环代码处,将其跳出死循环,或用IDA来反汇编。 </p>
<p>2.利用花指令</p>
<p><span class="p9">  </span>花指令是对付静态分析的重要手段。以下是一段汇编源程序:</p>
<table width="80%" border="0" align="center" bgcolor="#F7F7F7">
  <tr> 
    <td> 
      <blockquote> 
        <p>start_: <br>
          <br>
          &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;xor&nbsp; &nbsp; eax,1 <br>
          &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;add&nbsp; &nbsp; eax,2 <br>
          &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;jmp&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;label1 
          <br>
          label1:&nbsp; &nbsp;&nbsp;xor&nbsp; &nbsp; eax,3 <br>
          &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;add&nbsp; &nbsp; eax,4 <br>
          &nbsp; &nbsp; &nbsp; &nbsp; xor&nbsp; &nbsp; eax,5 <br>
          <br>
          end start_ </p>
      </blockquote>
    </td>
  </tr>
</table>
<p> <span class="p9">  </span>此时把源程序进行编译,然后用W32Dasm进行反汇编,得到的反汇编结果完全正常。接着我们将上述源程序作如下修改:</p>
<table width="80%" border="0" align="center" bgcolor="#F7F7F7">
  <tr> 
    <td>
      <blockquote> 
        <p>start_: <br>
          <br>
          &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;xor&nbsp; &nbsp; eax,1 <br>
          &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;add&nbsp; &nbsp; eax,2 <br>
          &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;jnz&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;label1 
          ;注意这里,用两句条件跳转代替了:jmp label1 <br>
          &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;jz&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;label1 
          <br>
          &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;db&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;0E8h&nbsp; 
          &nbsp;&nbsp; ;注意这个无用的字节和源程序的区别<br>
          label1:&nbsp; &nbsp;&nbsp;xor&nbsp; &nbsp; eax,3 <br>
          &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;add&nbsp; &nbsp; eax,4 <br>
          &nbsp; &nbsp; &nbsp; &nbsp; xor&nbsp; &nbsp; eax,5 <br>
          <br>
          <br>
          end start_ </p>
      </blockquote>
    </td>
  </tr>
</table>
<p> <span class="p9">  </span>再把源程序进行编译,然后用W32Dasm进行反汇编,来看一下反汇编后的结果:</p>
<table width="80%" border="0" align="center" bgcolor="#F7F7F7">
  <tr>
    <td> :00401000 83F001<br>
      :00401003 83C002<br>
      :00401006 7503<br>
      :00401008 7401<br>
      :0040100A E883F00383<br>
      :0040100F C00483F0</td>
    <td> xor eax, 00000001<br>
      add eax, 00000002<br>
      jne 0040100B<br>
      je 0040100B<br>
      call 83440092<br>
      rol byte ptr [ebx+4*eax], F0</td>
  </tr>
</table>
<p><span class="p9">  </span>结果令人很吃惊,会发现W32Dasm反汇编的结果和事先写的汇编指令不一样,从反汇编的结果中已经无法理解程序的&quot;真实&quot;的功能了,W32Dasm给出了一个意想不到的答案。 
  这是因为上述改动是为了在W32Dasm的反汇编工作中做点手脚,从而使得它犯下错误。那么W32Dasm为什么会因此而犯下这样的错误呢?</p>
<p><span class="p9">  </span>不同的机器指令包含的字节数并不相同,有的是单字节指令,有的是多字节指令。对于多字节指令来说,反汇编软件需要确定指令的第一个字节的起始位置,也就是操作码的位置,这样才能正确地反汇编这条指令,否则它就可能反汇编成另外一条指令了。 
  如果在程序中加入一些无用的字节来干扰反汇编软件的判断,从而使得它错误地确定指令的起始位置,那么也就达到了干扰W32Dasm反汇编工作的目的。</p>
<p> <span class="p9">  </span>通过前面的介绍,知道由于&quot;无用的字节&quot;干扰了W32Dasm对指令起始位置的判断,从而导致反汇编的错误结果,所以如果能让W32Dasm正确地识别出指令起始位置,也就达到了去除花指令的目的了。比如可以把那些无用的字节都替换成单字节指令,最常见的一种替换方法是把无用的字节替换成 
  NOP 指令,即十六进制数 90。</p>
<p>作者:Ljtt <font size="1"><span class="p9"><a href="http://st0ne.yeah.net" target="_blank">加解密技术交流站</a></span></font></p>
<p align="center"><a href="../Catalog.htm"><img src="../image/navtoc.gif" width="84" height="23" border="0"></a><a href="../chap5/Chap5-5.htm"><img src="../image/Navprev.gif" width="80" height="23" border="0"></a><a href="Chap6-1-1.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 + -