超級兔仔登錄檔優化軟體v2.2破解

看雪資料發表於2000-12-17

軟體名稱:超級兔仔登錄檔優化軟體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

相關文章