Dark Heaven - Tutorial: Registration von Animagic GIF v1.00b
Dark Heaven - Tutorial: Registration von Animagic GIF v1.05e
Dark Heaven - Tutorial: Registration von Animagic GIF v1.06b


ANIMAGIC GIF v1.00b
-------------------

Programm: 	Animagic GIF v1.00b - 32 Bit
Beschreibung: 	Programm zum Erstellen animierter GIFs
Autor:          (C) 1997, 1998 Right to Left Software, Inc.
Groesse: 	524.288 Byte (ANIMAGIC32.EXE)


Werkzeug: - W32DSM89


1. Lade ANIMAGIC GIF und anschlieend W32DSM89.


2. Deassembliere nun ANIMAGIC32.EXE ber [Debug/Attach to an Active Process].


3. Suche nun mittels [Refs/String Data References] nach der Fehlermeldung
   "Registration failed: Invalid Password". Durch einen Doppelklick wird die
   entsprechende Zeile im Listing angezeigt (0041F937).

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041F88D(C)
|
:0041F931 8B03                    mov eax, dword ptr [ebx] ; <- Sprung hierher suchen
:0041F933 6A00                    push 00000000
:0041F935 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"Registration failed: Invalid Password"
                                  |
:0041F937 68D0704600              push 004670D0               ; <- gefundene Referenz
:0041F93C FF700C                  push [eax+0C]
:0041F93F FF7068                  push [eax+68]
:0041F942 E877250200              call 00441EBE
:0041F947 83C414                  add esp, 00000014


4. Jetzt schauen wir uns die Zeilen darber an und suchen den Sprungbefehl, der zu
   dieser Fehlermeldung fhrt. Wir suchen mittels [Search/Find Text] nach der Adresse
   0041F931.

* Possible Reference to Dialog: DialogID_0006 
                                  |
:0041F7F1 6A06                    push 00000006
:0041F7F3 FF33                    push dword ptr [ebx]
:0041F7F5 6A00                    push 00000000
:0041F7F7 56                      push esi
:0041F7F8 E886C8FFFF              call 0041C083
:0041F7FD 83C410                  add esp, 00000010
:0041F800 56                      push esi
:0041F801 8B560C                  mov edx, dword ptr [esi+0C]
:0041F804 FF5214                  call [edx+14]
:0041F807 59                      pop ecx
:0041F808 48                      dec eax
:0041F809 746F                    je 0041F87A
:0041F80B 8B0D18104700            mov ecx, dword ptr [00471018]
:0041F811 FF09                    dec dword ptr [ecx]
:0041F813 8B4604                  mov eax, dword ptr [esi+04]
:0041F816 8368FC0C                sub dword ptr [eax-04], 0000000C
:0041F81A 8B16                    mov edx, dword ptr [esi]
:0041F81C 836AFC0C                sub dword ptr [edx-04], 0000000C
:0041F820 6A00                    push 00000000
:0041F822 56                      push esi
:0041F823 E8CA760200              call 00446EF2
:0041F828 83C408                  add esp, 00000008
:0041F82B 8B4E04                  mov ecx, dword ptr [esi+04]
:0041F82E 8341FC0C                add dword ptr [ecx-04], 0000000C
:0041F832 8B06                    mov eax, dword ptr [esi]
:0041F834 8340FC0C                add dword ptr [eax-04], 0000000C
:0041F838 8B5604                  mov edx, dword ptr [esi+04]
:0041F83B 816AFC6AFFFFFF          sub dword ptr [edx-04], FFFFFF6A
:0041F842 6A00                    push 00000000
:0041F844 8D4E35                  lea ecx, dword ptr [esi+35]
:0041F847 51                      push ecx
:0041F848 E858EF0100              call 0043E7A5
:0041F84D 83C408                  add esp, 00000008
:0041F850 8B4604                  mov eax, dword ptr [esi+04]
:0041F853 8140FC6AFFFFFF          add dword ptr [eax-04], FFFFFF6A
:0041F85A 6A00                    push 00000000
:0041F85C 8D562D                  lea edx, dword ptr [esi+2D]
:0041F85F 52                      push edx
:0041F860 E813250300              call 00451D78
:0041F865 83C408                  add esp, 00000008
:0041F868 8B8D24FFFFFF            mov ecx, dword ptr [ebp+FFFFFF24]
:0041F86E 64890D00000000          mov dword ptr fs:[00000000], ecx
:0041F875 E93A010000              jmp 0041F9B4

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041F809(C)
|
:0041F87A 53                      push ebx
:0041F87B E837D6FFFF              call 0041CEB7               ; <- Execute Call
:0041F880 59                      pop ecx
:0041F881 A2680C4700              mov byte ptr [00470C68], al
:0041F886 803D680C470000          cmp byte ptr [00470C68], 00
:0041F88D 0F849E000000            je 0041F931            ; <- Breakpoint setzen
:0041F893 C6056A0C470000          mov byte ptr [00470C6A], 00
:0041F89A 68200A4700              push 00470A20
:0041F89F 8D8520FEFFFF            lea eax, dword ptr [ebp+FFFFFE20]
:0041F8A5 50                      push eax
:0041F8A6 E8E9430300              call 00453C94
:0041F8AB 83C408                  add esp, 00000008


5. Als Ergebnis erhalten wir die Zeile 0041F88D, in welcher der gesuchte
   Sprungbefehl (je 0041F931) zu finden ist. Hier sollte vorerst ein Breakpoint
   gesetzt werden [F2].


6. In Zeile 0041F87B folgen wir dem Aufruf der Subroutine (Call 0041CEB7) mittels
   [Execute Text/Execute Call]. Wir gelangen zur Zeile 0041CEB7.

* Referenced by a CALL at Addresses:
|:0041CDD8   , :0041F87B   
|
:0041CEB7 55                      push ebp
:0041CEB8 8BEC                    mov ebp, esp
:0041CEBA 51                      push ecx
:0041CEBB 53                      push ebx
:0041CEBC 56                      push esi
:0041CEBD 57                      push edi
:0041CEBE BE3C0B4700              mov esi, 00470B3C

* Possible Indirect StringData Ref from Data Obj ->"ANIMAGIC16"
                                  |
:0041CEC3 BF64544600              mov edi, 00465464
:0041CEC8 8D45FC                  lea eax, dword ptr [ebp-04]
:0041CECB 50                      push eax

* Possible StringData Ref from Data Obj ->"%lX"
                                  |
:0041CECC 68346E4600              push 00466E34
:0041CED1 8D96C8000000            lea edx, dword ptr [esi+000000C8]
:0041CED7 52                      push edx
:0041CED8 E877AD0300              call 00457C54
:0041CEDD 83C40C                  add esp, 0000000C

* Possible Reference to Dialog: DialogID_0001 
                                  |
:0041CEE0 BB01000000              mov ebx, 00000001
:0041CEE5 EB1A                    jmp 0041CF01

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041CF05(C)
|
:0041CEE7 8D4664                  lea eax, dword ptr [esi+64]
:0041CEEA 50                      push eax
:0041CEEB 56                      push esi
:0041CEEC FF349F                  push dword ptr [edi+4*ebx]
:0041CEEF E89904FFFF              call 0040D38D
:0041CEF4 83C40C                  add esp, 0000000C
:0041CEF7 3B45FC                  cmp eax, dword ptr [ebp-04]
:0041CEFA 7504                    jne 0041CF00              ; <- Breakpoint setzen
:0041CEFC B001                    mov al, 01
:0041CEFE EB09                    jmp 0041CF09


7. Im obigen Listing sehen wir in Zeile 0041CEFA einen "Jump if not equal"-
   Sprungbefehl (jne 0041CF00). Hier setzen wir einen Breakpoint [F2].


8. In ANIMAGIC GIF geben wir nun beliebige Registrierungsdaten ein.

   z.B.: User name            : Dark Heaven
         Company              : DH
         Registration password: 1122334455

   Beim gesetzten Breakpoint wird W32DSM89 aktiv und wir knnen uns den
   Inhalt der einzelnen Register anschauen.

   EAX = 45CBBB33 = registration password


9. ANIMAGIC GIF kann nun mit folgenden Registrationsdaten freigeschaltet
   werden:
  
   User name            : Dark Heaven
   Company              : DH
   Registration password: 45CBBB33


Viel Spa beim CRACKEN!
Dark Heaven
14.12.1998



ANIMAGIC GIF v1.05e
-------------------

Programm: 	Animagic GIF v1.05e - 32 Bit
Beschreibung: 	Programm zum Erstellen animierter GIFs
Autor:          (C) 1997, 1998 Right to Left Software, Inc.
Groesse: 	598.016 Byte (ANIMAGIC32.EXE)


Werkzeug: - W32DSM89


1. Lade ANIMAGIC GIF und anschlieend W32DSM89.


2. Deassembliere nun ANIMAGIC32.EXE ber [Debug/Attach to an Active Process].


3. Suche nun mittels [Refs/String Data References] nach der Fehlermeldung
   "Registration failed: Invalid Password". Durch einen Doppelklick wird die
   entsprechende Zeile im Listing angezeigt (00420338).

:00420332 8B06                    mov eax, dword ptr [esi] ; <- Sprung hierher suchen
:00420334 6A00                    push 00000000
:00420336 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"Registration failed: Invalid Password"
                                  |
:00420338 68FA574700              push 004757FA           ; <- gefundene Referenz


4. Jetzt schauen wir uns die Zeilen darber an und suchen den Sprungbefehl,
   der zu dieser Fehlermeldung fhrt. Wir suchen mittels [Search/Find Text]
   nach der Adresse 00420332.


5. Als Ergebnis erhalten wir die Zeile 004202C0, in welcher der gesuchte
   Sprungbefehl (je 00420332) zu finden ist. Hier sollte vorerst ein Breakpoint
   gesetzt werden [F2].

:0042028C 68610E4800              push 00480E61
:00420291 E861FEFFFF              call 004200F7
:00420296 59                      pop ecx
:00420297 68610F4800              push 00480F61
:0042029C E856FEFFFF              call 004200F7
:004202A1 59                      pop ecx
:004202A2 6861104800              push 00481061
:004202A7 E84BFEFFFF              call 004200F7
:004202AC 59                      pop ecx
:004202AD 56                      push esi
:004202AE E8FDCAFFFF              call 0041CDB0 ; <- Execute Call
:004202B3 59                      pop ecx
:004202B4 A271104800              mov byte ptr [00481071], al
:004202B9 803D7110480000          cmp byte ptr [00481071], 00
:004202C0 7470                    je 00420332     ; <- gefundener Sprungbefehl
:004202C2 C6057410480000          mov byte ptr [00481074], 00
:004202C9 68000D4800              push 00480D00
:004202CE 68610E4800              push 00480E61


6. Nun fhren wir den Funktionsaufruf in Zeile 004202AE (call 0041CDB0) aus
   [Execute Text/Execute Call]. Wir gelangen somit zur Zeile 0041CDB0.

:0041CDB0 55                      push ebp
:0041CDB1 8BEC                    mov ebp, esp
:0041CDB3 83C4E8                  add esp, FFFFFFE8
:0041CDB6 53                      push ebx
:0041CDB7 56                      push esi
:0041CDB8 57                      push edi
:0041CDB9 BE610E4800              mov esi, 00480E61

* Possible Indirect StringData Ref from Data Obj ->"ANIMAGIC16"
                                  |
:0041CDBE BF04374700              mov edi, 00473704
:0041CDC3 8D45FC                  lea eax, dword ptr [ebp-04]
:0041CDC6 50                      push eax

* Possible StringData Ref from Data Obj ->"%lX"
                                  |
:0041CDC7 6862544700              push 00475462
:0041CDCC 8D9600020000            lea edx, dword ptr [esi+00000200]
:0041CDD2 52                      push edx
:0041CDD3 E8FC8F0400              call 00465DD4
:0041CDD8 83C40C                  add esp, 0000000C
:0041CDDB 33DB                    xor ebx, ebx
:0041CDDD E9BB000000              jmp 0041CE9D

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041CEA1(C)
|
:0041CDE2 8D8600010000            lea eax, dword ptr [esi+00000100]
:0041CDE8 50                      push eax
:0041CDE9 56                      push esi
:0041CDEA FF349F                  push dword ptr [edi+4*ebx]
:0041CDED E81306FFFF              call 0040D405
:0041CDF2 83C40C                  add esp, 0000000C
:0041CDF5 85DB                    test ebx, ebx
:0041CDF7 7516                    jne 0041CE0F      ; <- Breakpoint setzen
:0041CDF9 3B45FC                  cmp eax, dword ptr [ebp-04]
:0041CDFC 7411                    je 0041CE0F
:0041CDFE 6866544700              push 00475466
:0041CE03 56                      push esi
:0041CE04 FF349F                  push dword ptr [edi+4*ebx]
:0041CE07 E8F905FFFF              call 0040D405
:0041CE0C 83C40C                  add esp, 0000000C


7. Im obigen Listing sehen wir in Zeile 0041CDF7 einen "Jump if not equal"-
   Sprungbefehl (jne 0041CE0F). Hier setzen wir einen Breakpoint [F2].


8. In ANIMAGIC GIF geben wir nun beliebige Registrierungsdaten ein.

   z.B.: User name            : Dark Heaven
         Company              : DH
         Registration password: 1122334455

   Beim gesetzten Breakpoint wird W32DSM89 aktiv und wir knnen uns den
   Inhalt der einzelnen Register anschauen.

   EAX = D91B39A5 = registration password


9. ANIMAGIC GIF kann nun mit folgenden Registrationsdaten freigeschaltet
   werden:
  
   User name            : Dark Heaven
   Company              : DH
   Registration password: D91B39A5


Viel Spa beim CRACKEN!
Dark Heaven
14.12.1998



ANIMAGIC GIF v1.06b
-------------------

Programm: 	Animagic GIF v1.06b - 32 Bit
Beschreibung: 	Programm zum Erstellen animierter GIFs
Autor:          (C) 1997, 1998 Right to Left Software, Inc.
Groesse: 	598.016 Byte (ANIMAGIC32.EXE)


Werkzeug: - W32DSM89


1. Lade ANIMAGIC GIF und anschlieend W32DSM89.


2. Deassembliere nun ANIMAGIC32.EXE ber [Debug/Attach to an Active Process].


3. Suche nun mittels [Refs/String Data References] nach der Fehlermeldung
   "Registration failed: Invalid Password". Durch einen Doppelklick wird die
   entsprechende Zeile im Listing angezeigt (00420304).

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042028C(C)
|
:004202FE 8B06                    mov eax, dword ptr [esi]     ; <- Sprung suchen
:00420300 6A00                    push 00000000
:00420302 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"Registration failed: Invalid Password"
                                  |
:00420304 68FA574700              push 004757FA           ; <- gefundene Referenz
:00420309 FF700C                  push [eax+0C]
:0042030C FF7068                  push [eax+68]
:0042030F E892FB0200              call 0044FEA6
:00420314 83C414                  add esp, 00000014
:00420317 84DB                    test bl, bl
:00420319 7420                    je 0042033B
:0042031B 56                      push esi
:0042031C 8DB514FDFFFF            lea esi, dword ptr [ebp+FFFFFD14]
:00420322 BF610E4800              mov edi, 00480E61
:00420327 B984000000              mov ecx, 00000084
:0042032C F3                      repz
:0042032D A5                      movsd
:0042032E 5E                      pop esi
:0042032F 56                      push esi
:00420330 E847CAFFFF              call 0041CD7C
:00420335 59                      pop ecx
:00420336 A271104800              mov byte ptr [00481071], al


4. Jetzt schauen wir uns die Zeilen darber an und suchen den Sprungbefehl,
   der zu dieser Fehlermeldung fhrt. Wir suchen mittels [Search/Find Text]
   nach der Adresse 004202FE.

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004201AE(C)
|
:00420258 68610E4800              push 00480E61
:0042025D E861FEFFFF              call 004200C3
:00420262 59                      pop ecx
:00420263 68610F4800              push 00480F61
:00420268 E856FEFFFF              call 004200C3
:0042026D 59                      pop ecx
:0042026E 6861104800              push 00481061
:00420273 E84BFEFFFF              call 004200C3
:00420278 59                      pop ecx
:00420279 56                      push esi
:0042027A E8FDCAFFFF              call 0041CD7C                 ; <- Execute Call
:0042027F 59                      pop ecx
:00420280 A271104800              mov byte ptr [00481071], al
:00420285 803D7110480000          cmp byte ptr [00481071], 00
:0042028C 7470                    je 004202FE ; <- Sprungbefehl zur Fehlermeldung
:0042028E C6057410480000          mov byte ptr [00481074], 00
:00420295 68000D4800              push 00480D00
:0042029A 68610E4800              push 00480E61


5. Nun fhren wir den Funktionsaufruf in Zeile 0042027A (call 0041CD7C) aus
   [Execute Text/Execute Call]. Wir gelangen somit zur Zeile 0041CD7C.

* Referenced by a CALL at Addresses:
|:0041CBF1   , :0042027A   , :00420330   
|
:0041CD7C 55                      push ebp                 ; <- von call 0041CD7C
:0041CD7D 8BEC                    mov ebp, esp
:0041CD7F 83C4E8                  add esp, FFFFFFE8
:0041CD82 53                      push ebx
:0041CD83 56                      push esi
:0041CD84 57                      push edi
:0041CD85 BE610E4800              mov esi, 00480E61

* Possible Indirect StringData Ref from Data Obj ->"ANIMAGIC16"
                                  |
:0041CD8A BF04374700              mov edi, 00473704
:0041CD8F 8D45FC                  lea eax, dword ptr [ebp-04]
:0041CD92 50                      push eax

* Possible StringData Ref from Data Obj ->"%lX"
                                  |
:0041CD93 6862544700              push 00475462
:0041CD98 8D9600020000            lea edx, dword ptr [esi+00000200]
:0041CD9E 52                      push edx
:0041CD9F E8FC8F0400              call 00465DA0
:0041CDA4 83C40C                  add esp, 0000000C
:0041CDA7 33DB                    xor ebx, ebx
:0041CDA9 E9BB000000              jmp 0041CE69

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041CE6D(C)
|
:0041CDAE 8D8600010000            lea eax, dword ptr [esi+00000100]
:0041CDB4 50                      push eax
:0041CDB5 56                      push esi
:0041CDB6 FF349F                  push dword ptr [edi+4*ebx]
:0041CDB9 E80E06FFFF              call 0040D3CC
:0041CDBE 83C40C                  add esp, 0000000C
:0041CDC1 85DB                    test ebx, ebx
:0041CDC3 7516                    jne 0041CDDB             ; <- Breakpoint setzen
:0041CDC5 3B45FC                  cmp eax, dword ptr [ebp-04]
:0041CDC8 7411                    je 0041CDDB
:0041CDCA 6866544700              push 00475466
:0041CDCF 56                      push esi
:0041CDD0 FF349F                  push dword ptr [edi+4*ebx]
:0041CDD3 E8F405FFFF              call 0040D3CC
:0041CDD8 83C40C                  add esp, 0000000C


6. Im obigen Listing sehen wir in Zeile 0041CDC3 einen "Jump if not equal"-
   Sprungbefehl (jne 0041CDDB). Hier setzen wir einen Breakpoint [F2].


7. In ANIMAGIC GIF geben wir nun beliebige Registrierungsdaten ein.

   z.B.: User name            : Dark Heaven
         Company              : DH
         Registration password: 1122334455

   Beim gesetzten Breakpoint wird W32DASM aktiv und wir knnen uns den Inhalt
   der einzelnen Register anschauen.

   EAX = D91B39A5 = registration password


8. ANIMAGIC GIF kann nun mit folgenden Registrationsdaten freigeschaltet
   werden:
  
   User name            : Dark Heaven
   Company              : DH
   Registration password: D91B39A5


Viel Spa beim CRACKEN!
Dark Heaven
13.02.1999


