= 64、ZBServer Pro 1.50-r13 for Win95/NT ==================================================

ZBServer Pro 1.50-r13 for Win95/NT
Cracked by Hambo.H
Written in 18/9/1997

执行文件:ZBS_Pro.exe (长度:617,984 Bytes)

(1)去掉在用Register或Setting进入Setup时无法显示注册信息。
由于每次进入Setup程序都会检查注册码是否正确。
设BPX getprivateprofilestringa

0137:00409947  PUSH    004721E4
0137:0040994C  PUSH    004721D4
0137:00409951  CALL    [KERNEL32!GetPrivateProfileStringA] <===在此处被WinIce拦截
0137:00409957  TEST    EAX,EAX
0137:00409959  JLE     0040997C   <===正确读取则跳转
0137:0040995B  CMP     DWORD PTR [0047324C],0000265A
0137:00409965  JNZ     0040997C   <===不相等则跳转
0137:00409967  LEA     EAX,[ESP+04]

修改第二个跳转:
find : 5A 26 00 00 75 15
edit : -- -- -- -- 74 --

(2)修改注册:
设bpx getwindowtexta
在注册栏内输入名字和任意的注册号码。
按Register钮。
被WinIce拦截,再用BD * 把拦中断的功能关掉
然后连按4下F12,你会见到如下一段程序:

0137:00402317  PUSH    01
0137:00402319  CALL    0043D478  <==读取名字和注册码
0137:0040231E  PUSH    0047211C  <==按4下F12后这是你当前的位置
0137:00402323  MOV     EAX,[ESI+64]
0137:00402326  PUSH    EAX
0137:00402327  MOV     EDI,[KERNEL32!WritePrivateProfileStringA] 
0137:0040232D  PUSH    004721E4
0137:00402332  PUSH    004721D4
0137:00402337  CALL    EDI  <==将注册名字写入到ZBServer.ini文件的Registration段
0137:00402339  MOV     ECX,[ESI+60]
0137:0040233C  MOV     EAX,[ESI+5C]
0137:0040233F  LEA     EDX,[ESP+08]
0137:00402343  PUSH    ECX
0137:00402344  PUSH    EAX
0137:00402345  PUSH    0047234C
0137:0040234A  PUSH    EDX
0137:0040234B  CALL    00426A50
0137:00402350  LEA     ECX,[ESP+18]
0137:00402354  ADD     ESP,10
0137:00402357  PUSH    0047211C
0137:0040235C  PUSH    ECX
0137:0040235D  PUSH    004721CC
0137:00402362  PUSH    004721D4
0137:00402367  CALL    EDI   <==将注册码写入到ZBServer.ini文件的Registration段
0137:00402369  CALL    0040E8F0   <==进行注册码计算
0137:0040236E  CMP     DWORD PTR [0047324C],0000265A <==比较计算结果是否正确
0137:00402378  PUSH    00
0137:0040237A  JZ      00402393 <==如果相等则跳转
0137:0040237C  PUSH    00472328
0137:00402381  MOV     ECX,ESI
0137:00402383  PUSH    004722AC
0137:00402388  CALL    004472AD

修改上面所说的跳转:
find : 26 00 00 6A 00 74 17 
edit : -- -- -- -- -- 75 --

注册成功,它提示你重新启动该程序,以或得最佳效果。
然后重新启动程序,一看,还是显示没有注册。
它又一次检查注册码与名字是否相符。

(3)程序启动的注册修改:
先来看看ZBServer.ini文件,有下面一段:
[Registration]
firstDate2=872919669
email=hambo@nenpub.szptt.net.cn
name=Hambo.H
organization=Shenzhen University
regname=Hambo.H
procode=451-3794672

可以看出程序将会读取这些信息,我们可以用bpx getprivateprovate来拦截,
但拦截到的点太多了,所以下面的方法就比较简单:

用Symbol Loader装入ZBS_pro.exe

:s 0 l fffffff 'regname'
Pattern found at 013F:004721E4 (004721E4)

设bpm 013F:004721E4
按CTRL-D继续..
当被WinIce拦截到,按两次F12继续

0137:004111C4  CALL    0040E8F0   <==可以肯定这段程序是用来读去INI文件中的注册信息的
0137:004111C9  PUSH    004890F8   <==按两次F12后程序运行到此处
0137:004111CE  CALL    00426AC0   <==把取得的注册信息进行运算
0137:004111D3  ADD     ESP,04
0137:004111D6  CMP     DWORD PTR [0047324C],0000265A  <==进行比较
0137:004111E0  JNZ     00411219  <===不相等则跳转
0137:004111E2  PUSH    00473E80
0137:004111E7  CALL    00402720

所以进行以下修改:
find : 5A 26 00 00 75 37
edit : -- -- -- -- 74 --

到此为止,整个软件的注册完成,总共要修改三个地方。

-- 
Hambo.H
E-mail: hambo@nenpub.szptt.net.cn
ICQ: 2723066