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

📄 chap6-1-6.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="center" class="p"><span class="p9"><span class="p9">1、<a href="Chap6-1-1.htm">序列号方式</a> </span></span></div>
    </td>
    <td width="33%" valign="middle" align="center" class="p9" height="23"> 
      <div align="center">2、<a href="Chap6-1-2.htm">警告(NAG)窗口</a></div>
    </td>
    <td width="34%" valign="top" class="p9" height="23"> 
      <div align="center"><span class="p9">3、<a href="Chap6-1-3.htm">时间限制</a></span></div>
    </td>
  </tr>
  <tr> 
    <td width="33%" valign="middle" align="center" class="p9" height="23"> 
      <div align="center">4、<a href="Chap6-1-4.htm">Key File保护</a></div>
    </td>
    <td width="33%" valign="middle" align="center" class="p9" height="23"> 
      <div align="center">5、<a href="Chap6-1-5.htm">功能限制的程序</a> </div>
    </td>
    <td width="34%" valign="top" class="p9" height="23"> 
      <div align="center">6、<a href="Chap6-1-6.htm">CD-check</a></div>
    </td>
  </tr>
</table>
<p align="center"><span class="p9"><span class="p9"><b>6、CD-check </b> <b><a href="Chap6-1-61.htm">【习题】</a></b></span></span></p>
<p><br>
  <span class="p9">  </span>最简单也最常见的光盘保护就是程序在启动时判断光驱中的光盘上是否存在特定的文件,如果不存在则认为用户没有正版光盘,拒绝运行。在程序运行的过程当中一般不再检查光盘的存在与否。Windows下的具体实现一般是这样的:先用GetLogicalDriveStrings( 
  )或GetLogicalDrives( )得到系统中安装的所有驱动器的列表,然后再用GetDriveType( )检查每一个驱动器,如果是光驱则用CreateFileA( 
  )或FindFirstFileA( )等函数检查特定的文件存在与否,并可能进一步地检查文件的属性、大小、内容等。 这种光盘检查是比较容易被破解的,解密者只要利用上述函数设断点找到程序启动时检查光驱的地方,修改判断指令就可以跳过光盘检查。 
</p>
<p align="left" class="p9">(1)可将游戏(或其它程序)的光盘拿出,运行游戏,将出现一些错误提示,如: Please insert 
  the - CD, or: You need the CD to play the - . 利用这提示可在W32DASM中利用串式数据参考功能查找相应的代码进行分析。</p>
<p align="left" class="p9">(2)相关函数</p>
<p align="left" class="p9">1、GetDrivetype(a) 判断一个磁盘驱动器的类型</p>
<table width="100%" border="1" align="center" bordercolorlight="#808080" bordercolordark="#FFFFFF" cellspacing="0">
  <tr bgcolor="#E6E6F4"> 
    <td height="7" class="p9" colspan="2"> UINT GetDriveType( 
      <p> LPCTSTR lpRootPathName // String,包含了驱动器根目录路径的一个字串<br>
        ); </p>
  <tr bgcolor="#E6E6F4"> 
    <td height="7" class="p9" colspan="2">返回值 
  <tr bgcolor="#E6E6F4"> 
    <td height="12" class="p9" width="18%"> 
      <div align="center">0</div>
    <td height="12" class="p9" width="82%">驱动器不能识别 
  <tr bgcolor="#E6E6F4"> 
    <td height="12" class="p9" width="18%"> 
      <div align="center">1</div>
    <td height="12" class="p9" width="82%">指定的目录不存在 
  <tr bgcolor="#E6E6F4"> 
    <td height="12" class="p9" width="18%"> 
      <div align="center">2</div>
    <td height="12" class="p9" width="82%">DriveRemoveable 
  <tr bgcolor="#E6E6F4"> 
    <td height="12" class="p9" width="18%"> 
      <div align="center">3</div>
    <td height="12" class="p9" width="82%"> A Fixed Disk (HardDrive) 
  <tr bgcolor="#E6E6F4"> 
    <td height="12" class="p9" width="18%"> 
      <div align="center">4</div>
    <td height="12" class="p9" width="82%">Remote Drive(Network) 
  <tr bgcolor="#E6E6F4"> 
    <td height="12" class="p9" width="18%"> 
      <div align="center">5</div>
    <td height="12" class="p9" width="82%"> Cd-Rom驱动器 
  <tr bgcolor="#E6E6F4"> 
    <td height="12" class="p9" width="18%"> 
      <div align="center">6</div>
    <td height="12" class="p9" width="82%">RamDisk 
</table>
<p align="left" class="p9">如果是普通的程序,你可将EAX由5改成3即可。</p>
<p align="left" class="p9">注意:有些程序可能检测光盘根目录相关文件,CD的卷标也可能被检测。</p>
<p class="p9">2、GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母</p>
<table width="100%" border="1" align="center" bordercolorlight="#808080" bordercolordark="#FFFFFF" cellspacing="0">
  <tr bgcolor="#E6E6F4"> 
    <td height="14"> 
      <p class="p9">这函数没有参数</p>
  <tr bgcolor="#E6E6F4"> 
    <td height="14" class="p9">返回值 
  <tr bgcolor="#E6E6F4"> 
    <td height="14" class="p9">这个结构中的二进制位标志着存在哪些驱动器。其中,位0设为1表示驱动器A:存在于系统中;位1设为1表示存在B:驱动器;以次类推 
</table>
<p class="p9">3、GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径</p>
<table width="100%" border="1" align="center" bordercolorlight="#808080" bordercolordark="#FFFFFF" cellspacing="0">
  <tr bgcolor="#E6E6F4" class="p9"> 
    <td height="70"> 
      <p>DWORD GetLogicalDriveStrings(</p>
      <p> DWORD nBufferLength, // 字串的长度 <br>
        LPTSTR lpBuffer   // 用于装载逻辑驱动器名称的字串。每个名字都用一个NULL字符分隔,在最后一个名             字后面用两个NULL表示中止(空中止)<br>
        );</p>
  <tr bgcolor="#E6E6F4" class="p9"> 
    <td height="6">返回值 
  <tr bgcolor="#E6E6F4" class="p9"> 
    <td height="28">装载到lpBuffer的字符数量(排除空中止字符)。如缓冲区的长度不够,不能容下路径,则返回值就变成要求的缓冲区大小。零表示失败。会设置GetLastError 
</table>
<p class="p9">4、GetFileAttributesA 判断指定文件的属性</p>
<table width="100%" border="1" align="center" bordercolorlight="#808080" bordercolordark="#FFFFFF" cellspacing="0">
  <tr bgcolor="#E6E6F4" class="p9"> 
    <td height="28"> 
      <p>DWORD GetFileAttributes(</p>
      <p> LPCTSTR lpFileName //指定欲获取属性的一个文件的名字<br>
        );</p>
</table>
<p class="p9">5、GetFileSize 判断文件长度</p>
<table width="100%" border="1" align="center" bordercolorlight="#808080" bordercolordark="#FFFFFF" cellspacing="0">
  <tr bgcolor="#E6E6F4" class="p9"> 
    <td height="28"> 
      <p>DWORD GetFileSize(</p>
      <p> HANDLE hFile, // 文件的句柄<br>
        LPDWORD lpFileSizeHigh, // 指定一个长整数,用于装载一个64位文件长度的头32位。如这个长度没有超过               2^32字节,则该参数可以设为NULL(变成ByVal)<br>
        );</p>
  <tr bgcolor="#E6E6F4" class="p9"> 
    <td height="13">返回值 
  <tr bgcolor="#E6E6F4" class="p9"> 
    <td height="2">返回文件长度。&HFFFFFFFF表示出错。注意如lpFileSizeHigh不为NULL,且结果为&HFFFFFFFF,那么必须调用<font color="#FF3333">GetLastError</font>,判断是否实际发生了一个错误,因为这是一个有效的结果 
</table>
<p class="p9">6、GetLastError <font color="#000000">针对之前调用的api函数,用这个函数取得扩展错误信息</font></p>
<table border="1" width="100%" bordercolorlight="#808080" cellspacing="0"
bordercolordark="#FFFFFF" class="p9" bgcolor="#CCCCFF">
  <tr bgcolor="#E6E6F4"> 
    <td width="100%" colspan="2">返回值</td>
  </tr>
  <tr bgcolor="#E6E6F4"> 
    <td width="100%" colspan="2">由api函数决定。请参考api32.txt文件,其中列出了一系列错误常数;都以ERROR_前缀起头。常用的错误代码见下表</td>
  </tr>
  <tr bgcolor="#E6E6F4"> 
    <td width="50%">ERROR_INVALID_HANDLE</td>
    <td width="50%">无效的句柄作为一个参数传递</td>
  </tr>
  <tr bgcolor="#E6E6F4"> 
    <td width="50%">ERROR_CALL_NOT_IMPLEMENTED</td>
    <td width="50%">在win 95下调用专为win nt设计的win32 api函数</td>
  </tr>
  <tr bgcolor="#E6E6F4"> 
    <td width="50%">ERROR_INVALID_PARAMETER</td>
    <td width="50%">函数中有个参数不正确</td>
  </tr>
</table>
<p class="p9">7、ReadFile 从文件中读出数据 </p>
<p class="p9">具体参考KEYFILE一节。</p>
<p class="p9">8、其它一些CDROM信息</p>
<p class="p9">中断2F是mscdex中断,可用bpint 2f, al=0 ah=15检测Mmscdex是否安装。<br>
  也可试着用文件存取设断 </p>
<p align="center"><a href="../Catalog.htm"><img src="../image/navtoc.gif" width="84" height="23" border="0"></a><a href="Chap6-1-51.htm"><img src="../image/Navprev.gif" width="80" height="23" border="0"></a><a href="Chap6-1-61.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 + -