破解心得之3DMark2001篇 (10千字)

看雪資料發表於2001-04-18

破解心得之3DMark2001篇
作者:時空幻影
時間:2001年4月17日
工具:W23DASM白金版漢化版、TRW2000 v1.22註冊版

    用TRW2000載入3DMark2001.EXE後按F5讓程式繼續執行,然後點選單中的“Register->Register 3DMark2001...”,
輸入User Name:時空幻影
輸入Registration Code:12345-67890-09876-54321
按Ctrl+N啟用TRW2000,用BPX HMEMCPY設定斷點,再按F5,點OK,程式會被攔。
輸入PMODULE後再回車,進入3DMark2001的領空,再一直按F10到下面這個地方:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00439CD4(C)
|
:00439D33 8B4B48                  mov ecx, dword ptr [ebx+48]
:00439D36 8D542410                lea edx, dword ptr [esp+10]
:00439D3A 52                      push edx
:00439D3B 8D442424                lea eax, dword ptr [esp+24]
:00439D3F 50                      push eax
:00439D40 E8AB7CFDFF              call 004119F0            <--按F8進入
:00439D45 83F803                  cmp eax, 00000003
:00439D48 7737                    ja 00439D81
:00439D4A FF2485189E4300          jmp dword ptr [4*eax+00439E18]
:00439D51 6A01                    push 00000001
:00439D53 8BCD                    mov ecx, ebp

進入後再一直按F10到下面這個地方:

* Referenced by a CALL at Address:
|:00439D40 
|
:004119F0 8B442408                mov eax, dword ptr [esp+08]
:004119F4 56                      push esi
:004119F5 57                      push edi
:004119F6 6A01                    push 00000001
:004119F8 8BF9                    mov edi, ecx
:004119FA 8B4C2410                mov ecx, dword ptr [esp+10]
:004119FE 50                      push eax
:004119FF 51                      push ecx
:00411A00 8BCF                    mov ecx, edi
:00411A02 E839030000              call 00411D40            <--按F8進入
:00411A07 8BF0                    mov esi, eax
:00411A09 85F6                    test esi, esi
:00411A0B 7507                    jne 00411A14
:00411A0D 8BCF                    mov ecx, edi
:00411A0F E8ACFEFFFF              call 004118C0

進入後再一直按F10到下面這個地方:

* Possible StringData Ref from Code Obj ->"j"
                                  |
:00411D42 68E2186600              push 006618E2
:00411D47 64A100000000            mov eax, dword ptr fs:[00000000]
:00411D4D 50                      push eax
:00411D4E 64892500000000          mov dword ptr fs:[00000000], esp
:00411D55 83EC24                  sub esp, 00000024
:00411D58 53                      push ebx
:00411D59 56                      push esi
:00411D5A 8BF1                    mov esi, ecx
:00411D5C 57                      push edi
:00411D5D 8974240C                mov dword ptr [esp+0C], esi
:00411D61 E8CA21FFFF              call 00403F30
:00411D66 8B00                    mov eax, dword ptr [eax]
:00411D68 33DB                    xor ebx, ebx
:00411D6A 3BC3                    cmp eax, ebx
:00411D6C 0F85E6010000            jne 00411F58
:00411D72 8B7C2444                mov edi, dword ptr [esp+44]
:00411D76 57                      push edi
:00411D77 8BCE                    mov ecx, esi
:00411D79 E8A2FCFFFF              call 00411A20            <--按F8進入
:00411D7E 84C0                    test al, al
:00411D80 0F84B9010000            je 00411F3F
:00411D86 385C2448                cmp byte ptr [esp+48], bl
:00411D8A 0F848C010000            je 00411F1C
:00411D90 8B5704                  mov edx, dword ptr [edi+04]
:00411D93 3BD3                    cmp edx, ebx
:00411D95 7506                    jne 00411D9D

進入後再一直按F10到下面這個地方:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00411A84(C)
|
:00411AA6 8B4C2410                mov ecx, dword ptr [esp+10]
:00411AAA 8B4904                  mov ecx, dword ptr [ecx+04]
:00411AAD 8B11                    mov edx, dword ptr [ecx]
:00411AAF 8D442414                lea eax, dword ptr [esp+14]
:00411AB3 50                      push eax
:00411AB4 895C2430                mov dword ptr [esp+30], ebx
:00411AB8 FF520C                  call [edx+0C]            <--按F8進入
:00411ABB 8AD8                    mov bl, al
:00411ABD 8B442418                mov eax, dword ptr [esp+18]
:00411AC1 85C0                    test eax, eax
:00411AC3 5F                      pop edi
:00411AC4 5D                      pop ebp
:00411AC5 741C                    je 00411AE3
:00411AC7 8D48FF                  lea ecx, dword ptr [eax-01]
:00411ACA 8A01                    mov al, byte ptr [ecx]
:00411ACC 84C0                    test al, al
:00411ACE 740A                    je 00411ADA
:00411AD0 3CFF                    cmp al, FF
:00411AD2 7406                    je 00411ADA
:00411AD4 FEC8                    dec al
:00411AD6 8801                    mov byte ptr [ecx], al
:00411AD8 EB09                    jmp 00411AE3

進入後再一直按F10到下面這個地方:

* Reference To: MFC42.Ordinal:0337, Ord:0337h
                                  |
:005FE0E4 E87F290000              Call 00600A68
:005FE0E9 83C404                  add esp, 00000004
:005FE0EC 8D542450                lea edx, dword ptr [esp+50]
:005FE0F0 52                      push edx
:005FE0F1 6A14                    push 00000014
:005FE0F3 50                      push eax
:005FE0F4 8D4C241C                lea ecx, dword ptr [esp+1C]
:005FE0F8 89442420                mov dword ptr [esp+20], eax
:005FE0FC E8AFA9F9FF              call 00598AB0
:005FE101 8B442414                mov eax, dword ptr [esp+14]
:005FE105 83C050                  add eax, 00000050
:005FE108 89442418                mov dword ptr [esp+18], eax
:005FE10C 8944241C                mov dword ptr [esp+1C], eax
:005FE110 8D4C2410                lea ecx, dword ptr [esp+10]
:005FE114 51                      push ecx
:005FE115 8D542434                lea edx, dword ptr [esp+34]
:005FE119 52                      push edx
:005FE11A 8D442428                lea eax, dword ptr [esp+28]
:005FE11E 50                      push eax
:005FE11F 8BCE                    mov ecx, esi
:005FE121 C644245402              mov [esp+54], 02
:005FE126 E8450A0000              call 005FEB70            <--把註冊碼的每個字元(除開"-")與密碼錶中的字元比較,
:005FE12B 84C0                    test al, al                求出該字元在密碼錶中的序號。
:005FE12D 755B                    jne 005FE18A            <--跳至註冊碼計算部分
:005FE12F 8B4C2418                mov ecx, dword ptr [esp+18]
:005FE133 8B542414                mov edx, dword ptr [esp+14]
:005FE137 51                      push ecx
:005FE138 52                      push edx
:005FE139 8D4C2418                lea ecx, dword ptr [esp+18]
:005FE13D C644245001              mov [esp+50], 01
:005FE142 E849ADE6FF              call 00468E90
:005FE147 8B442414                mov eax, dword ptr [esp+14]
:005FE14B 50                      push eax

以下為註冊碼計算部分:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005FE12D(C)
|
:005FE18A 8B4C2414                mov ecx, dword ptr [esp+14]    <--[ECX]="12345678900987654321"中每個
                                                                    字元在密碼錶中的序號,每個佔4個位元組
:005FE18E 8B5108                  mov edx, dword ptr [ecx+08]
:005FE191 8B410C                  mov eax, dword ptr [ecx+0C]
:005FE194 8B6904                  mov ebp, dword ptr [ecx+04]
:005FE197 8B742428                mov esi, dword ptr [esp+28]    <--ESI為密碼錶的長度,即21h
:005FE19B 03C2                    add eax, edx
:005FE19D 8B11                    mov edx, dword ptr [ecx]
:005FE19F 03C5                    add eax, ebp
:005FE1A1 03C2                    add eax, edx
:005FE1A3 33D2                    xor edx, edx
:005FE1A5 F7F6                    div esi
:005FE1A7 8B5910                  mov ebx, dword ptr [ecx+10]
:005FE1AA 3BDA                    cmp ebx, edx
:005FE1AC 0F8510010000            jne 005FE2C2                    <--這個和以下的JNE都不能跳轉,否則GAME OVER
:005FE1B2 8B511C                  mov edx, dword ptr [ecx+1C]
:005FE1B5 8B4120                  mov eax, dword ptr [ecx+20]
:005FE1B8 8B5918                  mov ebx, dword ptr [ecx+18]
:005FE1BB 03C2                    add eax, edx
:005FE1BD 8B5114                  mov edx, dword ptr [ecx+14]
:005FE1C0 03C3                    add eax, ebx
:005FE1C2 03C2                    add eax, edx
:005FE1C4 33D2                    xor edx, edx
:005FE1C6 F7F6                    div esi
:005FE1C8 8B6924                  mov ebp, dword ptr [ecx+24]
:005FE1CB 3BEA                    cmp ebp, edx
:005FE1CD 0F85EF000000            jne 005FE2C2
:005FE1D3 8B5130                  mov edx, dword ptr [ecx+30]
:005FE1D6 8B4134                  mov eax, dword ptr [ecx+34]
:005FE1D9 03C2                    add eax, edx
:005FE1DB 03412C                  add eax, dword ptr [ecx+2C]
:005FE1DE 034128                  add eax, dword ptr [ecx+28]
:005FE1E1 33D2                    xor edx, edx
:005FE1E3 F7F6                    div esi
:005FE1E5 8B5938                  mov ebx, dword ptr [ecx+38]
:005FE1E8 3BDA                    cmp ebx, edx
:005FE1EA 0F85D2000000            jne 005FE2C2
:005FE1F0 8B5110                  mov edx, dword ptr [ecx+10]
:005FE1F3 8D042B                  lea eax, dword ptr [ebx+ebp]
:005FE1F6 03C2                    add eax, edx
:005FE1F8 33D2                    xor edx, edx
:005FE1FA F7F6                    div esi
:005FE1FC 8B793C                  mov edi, dword ptr [ecx+3C]
:005FE1FF 3BFA                    cmp edi, edx
:005FE201 0F85B9000000            jne 005FE2C0
:005FE207 8B5124                  mov edx, dword ptr [ecx+24]
:005FE20A 8D041F                  lea eax, dword ptr [edi+ebx]
:005FE20D 03C2                    add eax, edx
:005FE20F 33D2                    xor edx, edx
:005FE211 F7F6                    div esi
:005FE213 8B6940                  mov ebp, dword ptr [ecx+40]
:005FE216 3BEA                    cmp ebp, edx
:005FE218 0F85A2000000            jne 005FE2C0
:005FE21E 8D042F                  lea eax, dword ptr [edi+ebp]
:005FE221 03C3                    add eax, ebx
:005FE223 33D2                    xor edx, edx
:005FE225 F7F6                    div esi
:005FE227 8B5944                  mov ebx, dword ptr [ecx+44]
:005FE22A 3BDA                    cmp ebx, edx
:005FE22C 0F858E000000            jne 005FE2C0
:005FE232 8D042B                  lea eax, dword ptr [ebx+ebp]
:005FE235 03C7                    add eax, edi
:005FE237 33D2                    xor edx, edx
:005FE239 F7F6                    div esi
:005FE23B 8B4148                  mov eax, dword ptr [ecx+48]
:005FE23E 3BC2                    cmp eax, edx
:005FE240 757E                    jne 005FE2C0
:005FE242 03C3                    add eax, ebx
:005FE244 03C5                    add eax, ebp
:005FE246 33D2                    xor edx, edx
:005FE248 F7F6                    div esi
:005FE24A 39514C                  cmp dword ptr [ecx+4C], edx
:005FE24D 7571                    jne 005FE2C0
:005FE24F 51                      push ecx

相關文章