📄 chap6-1-31.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="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>3、</b><a href="Chap6-1-3.htm"><b>时间限制</b></a> <b><font color="#FF3366">【习题】</font></b></span></span></p>
<p align="left" class="p9"><b><span class="p9">1、习题一</span></b><span class="p9">
<a href="Exercise/section03/chap6-1-3-01.zip">chap6-1-3-01</a> 153K 每次20秒使用时间
易</span></p>
<p align="left" class="p9"><b><span class="p9">2、习题二</span></b><span class="p9">
<a href="Exercise/section03/chap6-1-3-02.zip">chap6-1-3-02</a> 15K 时间限制 ( 需<a href="Exercise/cw3220.zip">cw3220.dll</a>
) 易</span></p>
<p align="left" class="p9">
<script language="JavaScript1.2">
NS4 = (document.layers) ? 1 : 0;
IE4 = (document.all) ? 1 : 0;
ver4 = (NS4 || IE4) ? 1 : 0;
if (ver4) {
with (document) {
write("<STYLE TYPE='text/css'>");
if (NS4) {
write(".parent {position:absolute; visibility:visible}");
write(".child {position:absolute; visibility:visible}");
write(".regular {position:absolute; visibility:visible}")
}
else {
write(".child {display:none}")
}
write("</STYLE>");
}
}
function getIndex(el) {
ind = null;
for (i=0; i<document.layers.length; i++) {
whichEl = document.layers[i];
if (whichEl.id == el) {
ind = i;
break;
}
}
return ind;
}
function arrange() {
nextY = document.layers[firstInd].pageY +document.layers[firstInd].document.height;
for (i=firstInd+1; i<document.layers.length; i++) {
whichEl = document.layers[i];
if (whichEl.visibility != "hide") {
whichEl.pageY = nextY;
nextY += whichEl.document.height;
}
}
}
function initIt(){
if (!ver4) return;
if (NS4) {
for (i=0; i<document.layers.length; i++) {
whichEl = document.layers[i];
if (whichEl.id.indexOf("Child") != -1) whichEl.visibility = "hide";
}
arrange();
}
else {
divColl = document.all.tags("DIV");
for (i=0; i<divColl.length; i++) {
whichEl = divColl(i);
if (whichEl.className == "child") whichEl.style.display = "none";
}
}
}
function expandIt(el) {
if (!ver4) return;
if (IE4) {
whichEl = eval(el + "Child");
if (whichEl.style.display == "none") {
whichEl.style.display = "block";
}
else {
whichEl.style.display = "none";
}
}
else {
whichEl = eval("document." + el + "Child");
if (whichEl.visibility == "hide") {
whichEl.visibility = "show";
}
else {
whichEl.visibility = "hide";
}
arrange();
}
}
onload = initIt;
</script>
</p>
<div id="KB1Parent" class="parent"> <span class="p9"><a href="#" onClick="expandIt('KB1'); return false">
1、习题一 答案</a> </span></div>
<div id="KB1Child" class="child"> <span class="p9"> </span>
<table width="100%" align="center" cellspacing="0">
<tr bgcolor="#EFEFEF">
<td height="7" class="p9">这程序用上了SetTimer函数,设置断点:bpx setimer,将中断如下: <br>
:0043D3DF 66837B2E00 CMP WORD PTR [EBX+2E],00
<br>
:0043D3E4 7433 JZ
0043D419 <br>
:0043D3E6 6A00 PUSH
00
;处理定时过程的程序入口地址<br>
:0043D3E8 56 PUSH
ESI
;暂停时间值 (21 seconds) <br>
:0043D3E9 6A01 PUSH
01
; 定时器ID 标识符<br>
:0043D3EB 8B4328 MOV EAX,[EBX+28]
<br>
:0043D3EE 50 PUSH
EAX
; 句柄 <br>
:0043D3EF E8648FFCFF CALL USER32!SetTimer
<br>
:0043D3F4 85C0 TEST
EAX,EAX ; 时间是否到期? <br>
:0043D3F6 7521 JNZ
0043D419 ; 没到JMP <br>
... ... <br>
:0043D419 33C0 XOR
EAX,EAX <br>
<br>
现在我们可修改:0043D3E4 一行,让其直接跳过SetTimer函数,这样就没时间限制了。 <br>
将: JZ 0043D419改成JMP 0043D419 <br>
66837B2E007433改成66837B2E00EB33即可。
</table>
</div>
<div id="KB2Parent" class="parent"> <span class="p9"><a href="#" onClick="expandIt('KB2'); return false">
2、习题二 答案</a></span></div>
<div id="KB2Child" class="child"> <span class="p9"> </span>
<table width="100%" align="center" cellspacing="0">
<tr bgcolor="#EFEFEF">
<td height="7" class="p9">这是个时间限制程序。 <br>
一运行程序,我注意到跳出一对话框,说:trial-period has ended,这对话是调用messagebox函数的,今天我们不用此函数设断,这程序肯定调用了取系统时间函数,这样才能判断当前时间是否过期。因此用GetLocalTime函数设断。
<br>
bpx GetLocalTime <br>
中断如下: <br>
<br>
* Reference To: cw3220._getdate, Ord:0000h <br>
| <br>
:0040108A E83F040000 Call
004014CE ->GetLocalTime函数 <br>
:0040108F 59
pop ecx <br>
:00401090 817DF8CD070000 cmp dword ptr
[ebp-08], 000007CD <br>
//这一行觉得熟吧,7CD的十进制是1997,而当前时间在EAX里,是07D0 <br>
// <br>
:00401097 7F0F
jg 004010A8 ->如当前日期大于1997则出错。 <br>
<br>
剩下的工作太简单了,结束。
</table>
<span class="p9"> </span></div>
<div id="KB3Parent" class="parent"> <span class="p9"><a href="#" onClick="expandIt('KB3'); return false">
</a></span></div>
<span class="p9">
<script language='JavaScript'>
if (NS4) {
firstEl = "KB1Parent";
firstInd = getIndex(firstEl);
arrange();
}
</script>
</span>
<p align="center"><a href="../Catalog.htm"><img src="../image/navtoc.gif" width="84" height="23" border="0"></a><a href="Chap6-1-3.htm"><img src="../image/Navprev.gif" width="80" height="23" border="0"></a><a href="Chap6-1-4.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 + -