ZTZ-IE网络浏览器的破解与注册机
(版本1.8)
软件说明:
该软件是你快速打开、快速浏览网页的最佳浏览器软件,
该版本在原有功能基础上,添加了字体大小选项、设置为默
认浏览器等项功能,并添加了更多、更新的网址,使你访问
网页更加方便。进一步优化了源代码,稳定性进一步提高。
下载地址:http://202.99.189.4/ztz/ZTZ-IE.zip
使用工具:TRW2000
难度 :0.5 (10为最难,0为最易)
CRACKER :伪装者[BCG&&CCG]
目的 :学习破解一周年纪念+应付PETERCHEN那家伙
过程如下:
1、下载(废话)
2、安装(还是废话)
3、启动ZTZ-IE(……)
4、输入用户名、注册码,
用户名:cracknow
注册码:121212
5、启动TRW2000、BPX HMEMCPY
6、按确定,被拦截
7、BC *PMODULE,到ZTZ-IE部分(也叫领空)
8、N次F12(N=7 OR N=8)F9
9、一路F10,直到0167:0046C034 CALL 0046BD9C这行,因为这个CALL就是关键
的计算注册码的CALL,F8跟进。为什么这么判断?有经验的看一眼下面有一个
CALL+JNZ,应该就是注册码比较的部分了,没经验的接着F10,等着出错,记
住位置然后下回在进来。
以下为计算注册码的部分,在这之前有判断用户名长度是否大于3的
在这之后就是计算注册码与输入的注册码的对比
0167:0046BDE4 MOV EBX,01
初始化EBX=1
0167:0046BDE9 MOV ECX,EBX
ECX=EBX
0167:0046BDEB IMUL ECX,EBX
ECX*=EBX
0167:0046BDEE MOV EAX,ECX
EAX=ECX
0167:0046BDF0 IMUL EBX
EAX*=EBX
0167:0046BDF2 LEA EDX,[EBX+14]
EDX=EBX+0X14
0167:0046BDF5 MOV EDI,EDX
EDI=EDX
0167:0046BDF7 CDQ
0167:0046BDF8 IDIV EDI
EAX/=EDI,EDX=EAX%EDI
0167:0046BDFA MOV EDI,EDX
EDI=EDX
0167:0046BDFC MOV EAX,ECX
EAX=ECX
0167:0046BDFE LEA EDX,[EBX+0A]
EDX+=EBX+0XA
0167:0046BE01 MOV ECX,EDX
ECX=EDX
0167:0046BE03 CDQ
0167:0046BE04 IDIV ECX
EAX/=ECX,EDX=EAX%ECX
0167:0046BE06 ADD EDI,EDX
EDI+=EDX
0167:0046BE08 MOV EAX,EDI
EAX=EDI
0167:0046BE0A MOV EDX,EBX
EDX=EBX
0167:0046BE0C ADD EDX,EDX
EDX+=EDX
0167:0046BE0E ADD EAX,EDX
EAX+=EDX
0167:0046BE10 ADD EAX,BYTE +08
EAX+=8
0167:0046BE13 MOV EDX,[EBP-0C]
0167:0046BE16 MOVZX EDX,BYTE [EDX+EBX-01]
EDX=STRING[i]
0167:0046BE1B ADD EAX,EDX
EAX+=EDX
0167:0046BE1D CMP EAX,BYTE +7A -------------|
0167:0046BE20 JNG 0046BE2A
|
0167:0046BE22 SUB EAX,BYTE +0A
|
0167:0046BE25 CMP EAX,BYTE +7A
|
0167:0046BE28 JG 0046BE22
|
0167:0046BE2A CMP EAX,BYTE +61
|------>比较EAX是否在'a'~'z'之间,大于每次减10
0167:0046BE2D JNL 0046BE37
| 小于每次加10直到EAX在'a'~'z'之间
0167:0046BE2F ADD EAX,BYTE +0A
|
0167:0046BE32 CMP EAX,BYTE +61
|
0167:0046BE35 JL 0046BE2F --------------|
0167:0046BE37 MOV [EBP-15],AL
0167:0046BE3A LEA EAX,[EBP-1C]
0167:0046BE3D MOV DL,[EBP-15]
0167:0046BE40 CALL 00403D14
0167:0046BE45 MOV EDX,[EBP-1C]
0167:0046BE48 LEA EAX,[EBP-10]
0167:0046BE4B CALL 00403DF4
0167:0046BE50 INC EBX
EBX++
0167:0046BE51 DEC ESI
ESI--(ESI中为用户名长度)
0167:0046BE52 JNZ 0046BDE9
0167:0046BE54 MOV EAX,[EBP-10]
0167:0046BE57 CALL 00403DEC
0167:0046BE5C CMP EAX,BYTE +0A
比较生成注册码长度是否<10
0167:0046BE5F JNL NEAR 0046BEE9
>=则跳
0167:0046BE65 MOV EAX,[EBP-10]
0167:0046BE68 CALL 00403DEC
求用户名长度的CALL
0167:0046BE6D PUSH EAX
0167:0046BE6E MOV EAX,0A
0167:0046BE73 POP EDX
0167:0046BE74 SUB EAX,EDX
10-用户名长度
0167:0046BE76 MOV ESI,EAX
0167:0046BE78 TEST ESI,ESI
0167:0046BE7A JNG 0046BEE9
0167:0046BE7C MOV EBX,01 ------------------|
0167:0046BE81 MOV ECX,EBX
|
0167:0046BE83 IMUL ECX,EBX
|
0167:0046BE86 MOV EAX,ECX
| 和上面的计算注册码的循环类似
0167:0046BE88 IMUL EBX
| 作用是如果注册码不足10位补齐
0167:0046BE8A LEA EDX,[EBX+14]
| 注册码
0167:0046BE8D MOV EDI,EDX
|
0167:0046BE8F CDQ
|
0167:0046BE90 IDIV EDI
|
0167:0046BE92 MOV EDI,EDX
|
0167:0046BE94 MOV EAX,ECX
|
0167:0046BE96 LEA EDX,[EBX+0A]
|
0167:0046BE99 MOV ECX,EDX
|
0167:0046BE9B CDQ
|
0167:0046BE9C IDIV ECX
|
0167:0046BE9E ADD EDI,EDX
|
0167:0046BEA0 MOV EAX,EDI
|
0167:0046BEA2 MOV EDX,EBX
|
0167:0046BEA4 ADD EDX,EDX
|
0167:0046BEA6 ADD EAX,EDX
|
0167:0046BEA8 INC EAX
| ****这里和上面不一样EAX++
0167:0046BEA9 MOV EDX,[EBP-0C]
|
0167:0046BEAC MOVZX EDX,BYTE [EDX+01]
| EDX=STRING[1]*********
0167:0046BEB0 ADD EAX,EDX
|
0167:0046BEB2 CMP EAX,BYTE +7A
|
0167:0046BEB5 JNG 0046BEBF
|
0167:0046BEB7 SUB EAX,BYTE +0A
|
0167:0046BEBA CMP EAX,BYTE +7A
|
0167:0046BEBD JG 0046BEB7
|
0167:0046BEBF CMP EAX,BYTE +61
|
0167:0046BEC2 JNL 0046BECC
|
0167:0046BEC4 ADD EAX,BYTE +0A
|
0167:0046BEC7 CMP EAX,BYTE +61
|
0167:0046BECA JL 0046BEC4
|
0167:0046BECC MOV [EBP-15],AL
|
0167:0046BECF LEA EAX,[EBP-20]
|
0167:0046BED2 MOV DL,[EBP-15]
|
0167:0046BED5 CALL 00403D14
|
0167:0046BEDA MOV EDX,[EBP-20]
|
0167:0046BEDD LEA EAX,[EBP-10]
|
0167:0046BEE0 CALL 00403DF4
|
0167:0046BEE5 INC EBX
|
0167:0046BEE6 DEC ESI
| ESI=10-注册码长度
0167:0046BEE7 JNZ 0046BE81------------------|
0167:0046BEE9 MOV EAX,[EBP-10]----------------|
0167:0046BEEC CALL 00403DEC
|
0167:0046BEF1 MOV ESI,EAX
|
0167:0046BEF3 TEST ESI,ESI
|
0167:0046BEF5 JNG 0046BF23
|
0167:0046BEF7 MOV EBX,01
|注册码倒续
0167:0046BEFC MOV EAX,[EBP-10]
|
0167:0046BEFF CALL 00403DEC
|
0167:0046BF04 SUB EAX,EBX
|
0167:0046BF06 MOV EDX,[EBP-10]
|
0167:0046BF09 MOV DL,[EDX+EAX]
|
0167:0046BF0C LEA EAX,[EBP-24]
|
0167:0046BF0F CALL 00403D14
|
0167:0046BF14 MOV EDX,[EBP-24]
|
0167:0046BF17 LEA EAX,[EBP-14]
|
0167:0046BF1A CALL 00403DF4
|
0167:0046BF1F INC EBX
|
0167:0046BF20 DEC ESI
|
0167:0046BF21 JNZ 0046BEFC--------------------|
0167:0046BF23 MOV EAX,[EBP-08]
0167:0046BF26 MOV EDX,[EBP-14]
到这里就差不多了,不过我认为这样生成的注册码实在是没什么意思,生成的注册码
大概也就是从'p'到'z'虽然有<0x61 +0xa但是一般只有输入大写字母或数字符号时才
出现,即使26个字母全出全了,这样的注册码算法也太过简单,建议作者在下个版本
中改进。
后面跟这个的注册机
#include "stdio.h"
main()
{ int c,d,i,eax,ebx,ecx,edx,edi;
unsigned char string[80];
start:printf("********ZTZ-IE 1.8*********\nThis keygen is made by Pretender\nPlease
input your name : ");
gets(string);
d=strlen(string);
if(d<4) {printf("Your name must more than 3 letters!!!\n\n");goto
start;}
c=string[1];
for(i=0;;i++)
{
ebx=i+1;
if(i>=d) ebx-=d;
ecx=ebx;ecx*=ebx;eax=ecx;eax*=ebx;edi=ebx+0x14;edi=eax%edi;
eax=ecx;edx=ebx+0xa;ecx=edx;edi+=eax%ecx;eax=edi;edx=ebx;
edx+=edx;eax+=edx;
if(i<d) eax+=8,eax+=string[i];
else {if(d>10) {if(i==d) break;}
if(d<=10) {if(i==10) break;}
eax+=1,eax+=c;}
while(eax>0x7a)
eax-=0xa;
while(eax<0x61)
eax+=0xa;
string[i]=eax;
}
printf("Your Register code is : ");
for(;i>=0;i--)
printf("%c",string[i-1]);
printf("\n ***************************** ---
--- ---\n *Welcome to WWW.CRACKNOW.COM* /
/ / --\n *****************************
--- --- --/\n");
}
- 标 题:ZTZ-IE网络浏览器的破解与注册机,应付PETERCHEN用的 (8千字)
- 作 者:伪装者[CCG]
- 时 间:2001-8-11 10:48:35
- 链 接:http://bbs.pediy.com