• 标 题:超级兔仔注册表优化软件v2.2破解
  • 作 者:1212
  • 时 间:2000-12-17 9:53:15
  • 链 接:http://bbs.pediy.com

软件名称:超级兔仔注册表优化软件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