软件名称:超级兔仔注册表优化软件v2.2
破解工具:trw2000 v1.22注册版、w32dasm gold版、procdump 1.62、fileinfo 2.4
本人名言:授人以码,不若授人以法。
所用时间:3小时
破解人:唐寅
正文:
闲来无事,应朋友之要求,对超级兔仔注册表优化软件v2.2进行破解。
1.祭起FileInfo的大旗,看看regopt.exe是用什么包装的。原来是Upx v0.81。
2.启动Procdump,调入regopt.exe,用Upx项进行脱壳。文件另存为up_regopt.exe。
3.打开W32dasm,对up_regopt.exe进行反汇编,调看ref data,找到:RegName,RegCode,并从程序中看到在Hkey_local_machine/software/Supper
Rabbit/MagicSet下和Hkey_local_machine/software/Supper Rabbit/RegTool下。
4.在上述两个地方均增加Regname、RegCode,值任意。
5.我们从退出时注册不成功的话,会弹出一个对话框提示,从它下手。
6、打开trw2000,loadup_regopt.exe,在按退出键之前下断点bpx rtcMsgBox,按“退出”,立刻被中断。得到一个地址,记下。打开w32dasm,goto你记下的地址。
7.我发现它是以内存的[ebx(或eax)+0000009c]处的dword值进行判断的。程序见下面的“程序退出时的比较”和“程序启动时的比较”。
8.按照这一地址设断:bpmd [ebx+0000009c] rw,发现程序第二次中断于“程序启动时的比较”处。如果将此处的值改为非0,则不会弹出about对话框了。
9.顺藤摸瓜,在w32dasm中查找“09c]”字符串,找到如下“判断注册码正确与否的程序”:
判断注册码正确与否的程序:
:004118CD FF15F0854200 call dword ptr
[004285F0]
:004118D3 FF150C844200 call dword ptr
[0042840C]
:004118D9 DC1D10134000 fcomp qword
ptr [00401310] //比较注册码
:004118DF DFE0
fstsw ax
:004118E1 F6C440
test ah, 40
:004118E4 750C
jne 004118F2 //正确则跳
:004118E6 C78514FEFFFF01000000 mov dword ptr [ebp+FFFFFE14], 00000001
//注册码不正确赋1
:004118F0 EB0A
jmp 004118FC
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004118E4(C)
|
:004118F2 C78514FEFFFF00000000 mov dword ptr [ebp+FFFFFE14], 00000000
//注册码正确时为0
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004118F0(U)
|
:004118FC 8B55D8
mov edx, dword ptr [ebp-28]
:004118FF 52
push edx
:00411900 FF153C834200 call dword ptr
[0042833C]
:00411906 33C9
xor ecx, ecx
:00411908 83F80A
cmp eax, 0000000A //比较注册码是否10位
:0041190B 0F95C1
setne cl //注册码是10位则ecx为0
:0041190E 8B9514FEFFFF mov edx, dword
ptr [ebp+FFFFFE14] //将注册码判断的结果取出
:00411914 0BD1
or edx, ecx //注册码正确时ecx==edx==0
:00411916 85D2
test edx, edx
:00411918 7514
jne 0041192E //不正确时跳
:0041191A C745FC1B000000 mov [ebp-04], 0000001B
:00411921 8B4508
mov eax, dword ptr [ebp+08]
:00411924 C7809C000000FFFFFFFF mov dword ptr [ebx+0000009C], FFFFFFFF
//look,赋“-1”表示完全成功!哈哈。
程序启动时的比较:
:00413C83 83B89C00000000 cmp dword ptr [eax+0000009C],
00000000
:00413C8A 0F851E010000 jne 00413DAE
//不为0则不弹出“about”对话框
程序退出时的比较:
:00414013 8B8B9C000000 mov ecx, dword
ptr [ebx+0000009C]
:00414019 33C0
xor eax, eax //eax==0
:0041401B 3BC8
cmp ecx, eax //ecx=0的话弹出对话框
:0041401D 8945DC
mov dword ptr [ebp-24], eax
:00414020 8945D8
mov dword ptr [ebp-28], eax
:00414023 8945D4
mov dword ptr [ebp-2C], eax
:00414026 8945D0
mov dword ptr [ebp-30], eax
:00414029 8945CC
mov dword ptr [ebp-34], eax
:0041402C 8945C8
mov dword ptr [ebp-38], eax
:0041402F 8945C4
mov dword ptr [ebp-3C], eax
:00414032 8945C0
mov dword ptr [ebp-40], eax
:00414035 8945BC
mov dword ptr [ebp-44], eax
:00414038 8945B8
mov dword ptr [ebp-48], eax
:0041403B 8945B4
mov dword ptr [ebp-4C], eax
:0041403E 8945A4
mov dword ptr [ebp-5C], eax
:00414041 894594
mov dword ptr [ebp-6C], eax
:00414044 894584
mov dword ptr [ebp-7C], eax
:00414047 898574FFFFFF mov dword ptr
[ebp+FFFFFF74], eax
:0041404D 898564FFFFFF mov dword ptr
[ebp+FFFFFF64], eax
:00414053 898544FFFFFF mov dword ptr
[ebp+FFFFFF44], eax
:00414059 898540FFFFFF mov dword ptr
[ebp+FFFFFF40], eax
:0041405F 89853CFFFFFF mov dword ptr
[ebp+FFFFFF3C], eax
:00414065 898538FFFFFF mov dword ptr
[ebp+FFFFFF38], eax
:0041406B 0F8556010000 jne 004141C7
//ecx不为0跳转
10.用“0000000000”一试发现注册成功。那就这样吧。
11.结论:
在注册表中/hkey_local_machine/software/Supper Rabbit/MagicSet和
/hkey_local_machine/software/Supper
Rabbit/RegTool下增加字符串值:
"RegName"="你的名字"
"RegCode"="0000000000"
另外,请教高手 fcomp qword ptr [00401310]的具体使用情况,本人不甚清楚。
唐寅2000-12-17
- 标 题:超级兔仔注册表优化软件v2.2破解
- 作 者:1212
- 时 间:2000-12-17 9:53:15
- 链 接:http://bbs.pediy.com