📄 chap6-2-1.htm.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>1、Anti-Debug</b></span></span></span></p>
<p>1.MeltICE子类型<br>
类型:检测SoftICE、TRW2000<br>
平台:Windows9x、Windows NT<br>
原理:用CreateFileA( )或_lopen( )函数试图获得SoftICE的驱动程序"\\.\SICE"(Windows9X版本)、"\\.\SIWDEBUG"、"\\.\NTICE"(Windows
NT版本)、"\\.\SIWVID"等的句柄,如果成功则说明SoftICE驻留在内存中。</p>
<p>2.VWIN32_Int41Dispatch子类型<br>
类型:检测SoftICE<br>
平台:Windows9x<br>
原理:VWIN32.VxD(其VxD ID为0x002A)提供一个名为VWIN32_Int41Dispatch的VxD service(其service
ID为0x002A),系统内核使用此服务来与系统级调试器如WinDBG、SoftICE等进行通信。其中0x4F号子功能是用来查询调试器是否已经驻留内存并能否处理保护模式程序,如果是的话则调试器应返回0xF386。</p>
<p>3.给SoftICE发送命令<br>
类型:检测SoftICE<br>
平台:Windows9x、Windows NT<br>
原理:通过调试中断int 3给SoftICE发送命令让其执行,其中SI和DI寄存器中放的分别是固定值0x4647("FG")和0x4A4D("JM")。AX中存放的是子功能号,值为0x0911则表示让SoftICE执行命令,此时DX指向一个命令字符串如"HBOOT"等。AX还可以为其它子功能号,比如让SoftICE修改断点设置等。</p>
<p>4、BoundsChecker后门<br>
类型:检测SoftICE<br>
平台:Windows9x、Windows NT<br>
原理:这是SoftICE为BoundsChecker留的一个公开的接口,入口参数EBP = 0x4243484B(即"BCHK"),AL
=4,如果SoftICE在内存中则应返回AL = 0。</p>
<p> 这种方法一般也要结合SEH?(结构异常处理)来实现,否则当SoftICE不存在时就会引起非法操作。</p>
<p>5.ICECream子类型<br>
类型:检测SoftICE、TRW2000<br>
平台:Windows9x<br>
原理:调试器驻留后修改INT 1和INT 3的入口,指向它自己的处理程序,所以入口高位偏移与其他中断不同。其他所有中断入口高位偏移都相同。</p>
<p>6.INT 68h子类型<br>
类型:检测SoftICE<br>
平台:Windows9x<br>
原理:</p>
<blockquote>
<p>MOV AH, 43h<br>
INT 68h<br>
CMP AX, 0F386h ;检测此处是否被调试器设置0F386h<br>
JZ SoftICE_is_here</p>
</blockquote>
<p>7.搜索特征串<br>
类型:检测SoftICE<br>
平台:Windows9x<br>
原理:通过在内存中搜索SoftICE的特征串来发现SoftICE,这一般要结合SEH一起使用,以防止引起内存保护出错而使得程序被终止。这种方法在DOS下是可行的。由于Windows95之后的操作系统中的每个ring
3进程的地址空间是独立的,使得这种方法受到限制。比如在内存中搜索"WINICE.BR"。</p>
<p>8.IsDebuggerPresent子类型<br>
类型:检测SoftICE<br>
平台:Windows NT<br>
原理:调用kernel32.dll输出的函数IsDebuggerPresent()来检测是否有调试器存在。这个函数只能检查使用Debug API来跟踪程序的调试器,无法检测SoftICE之类的系统级调试器。
</p>
<blockquote>
<p>感谢Blowfish整理,更多参考:<a href="http://www.shield.or.jp/crackz/Miscpapers.htm#antidbug" target="_blank">http://www.shield.or.jp/crackz/</a>
</p>
</blockquote>
<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
© 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 + -