|
| |
精品推荐 |
 |
|
| |
|
|
|
|
用SOFTICE破解WINZIP的过程
|
日期:2008年5月24日 作者:清风网络学院 查看:[大字体
中字体 小字体]
|
10. 继续按F10多次,当程序走到0167:00407FA1 CMP BYTE PTR [0048CD78],00时停下来,这条指令将内存0048CD78中的数据和00比较,然后根据比较结果判断程序走向。用 D 0048CD78,观察softice的数据区,我们可以看到0048CD78中的数据是“KraneXH”,现在我们知道这条指令的作用是判断我们输入的名字是否为空,如果没有输入任何东西,程序将会跳到00408005去;同样的,按F10走到0407FAC CMP BYTE PTR [0048CDA4],00这行停下,然后用 D 0048CDA4,可以看到0048CDA4中的数据是“12345678”。因为我们输入了名字和注册码,所以程序不会跳到 00408005去,程序检查输入的名字和注册码,如果任何一个没有输入(既其值为00),程序都会跳到00408005去,由此我们应该想到00408005很可能就是显示出错的地方,即当程序走到00408005 的时候,表示输入的名字和注册码是错误的;
11. 按F10两次来到下面的那个CALL 00407905(因为程序刚才停在0167:00407FAC CMP BYTE PTR [0048CDA4],00上): ...... 0167:00407FB5 CALL 00407905 ←- 程序停留在这里 0167:00407FBA TEST EAX,EAX 0167:00407FC3 JZ 00408005 ...... 程序判断输入的名字和注册码是否为空后调用CALL 00407905,这个CALL将结果返回到EAX中,程序根据EAX值判断走向。从程序可以知道,如果EAX的返回值是0,则程序会跳到00408005,就是刚才我们判断是有问题的地方。那么这个CALL倒底藏着什么猫腻呀?现在还不是很清楚,接着按F10两次来到JZ 00408005停下。现在看看softice中的零(即Z)标志位,其值是零,所以程序将会跳到00408005去,我们姑且按F10跳到00408005去看个究竟: ...... 0167:00408005 CALL 004082A6 ←- 程序停留在这里 0167:0040800A PUSH 0000028E 0167:0040800F CALL 0043F5ED 0167:00408014 PUSH EAX 0167:00408015 PUSH EBX 0167:00408016 PUSH 3D 0167:00408018 CALL 00430025 ←- 出现错误框 0167:0040801D ADD ESP,10 0167:00408020 INC DWORD PTR [00487AF8] 0167:00408026 CMP DWORD PTR [00487AF8],03 ←- 判断错误次数是否到了3次? 0167:0040802D JNZ 0040812C 0167:00408033 PUSH 00 0167:00408035 PUSH EBX 0167:00408036 CALL [USER32!EndDialog] 0167:0040803C JMP 0040812C ......
12. 一直按F10走过0167:00408018 CALL 00430025,这是程序蹦出一个窗口,警告:Incomplete or incorrect information(不完整或不正确的信息),程序走到这里就已经很明朗了:如果程序在前面的时候跳到00408005来,就表示输入的名字和注册码是错误的,所以刚才的那个0167:00407FB5 CALL 00407905一定是比较输入的注册码是否正确的地方,也就是里面肯定有将我们输入的注册码和正确的注册码相比较的地方,所以我们要进入CALL 00430025里去看看。如果继续往CALL 00430025下面的语句看的话,你会看到下面的几句: 0167:00408020 INC DWORD PTR [00487AF8] 0167:00408026 CMP DWORD PTR [00487AF8],03 0167:0040802D JNZ 0040812C 程序先将内存00487AF8处的值加1(其初始值为0,可以在这条语句前用 D 00487AF8 查看),然后比较是否是3,如果不是就跳到0040812C,如果是则执行后面的0167:00408036 CALL [USER32!EndDialog],其作用就是关闭对话框,也就是我们输入名字和注册码的窗口。由此我们可以看出此处程序的作用是检查错误输入名字、注册码的错误次数是否已经到了3次,如果到了3次,则关闭对话框,不允许再输入;如果少于3次,可有机会再次输入名字和注册码。
13. 重复前面的步骤1到11,让程序停在0167:00407FB5 CALL 00407905上,然后按F8进入这个CALL里面去: ...... 0167:004079D5 PUSH EBP 0167:004079D6 PUSH EBP,ESP 0167:004079D8 SUB ESP,00000208 0167:004079DE PUSH EBX
上一篇:Tomcat全攻略
下一篇:破解WinXfilesBlowfish的注册加密
|
| 相关文章: |
|
|
|
| 相关软件: |
|
|
|
|