   Date: 04.09.2000 
  Topic: Jak znalezc poprawny serial 
Program: Crackme v4.8 Easy by Creeper^
   Skad: na polskich stronach crackerskich
  Tools: SI
 Poziom: Easy
Anty SI: brak


Uruchamiamy nasza ofiare i stwierdzamy, ze jest napisana w Delphi 5 i nie mozna jej patchowac. Widzimy rowniez dwa edity w ktorych wpisujemy Name i Serial. Ja wpisalem CtoM i 605459376.
Mimo, ze prog jest napisany w Delphi to zadzialala pulapka na GetWindowTextA. Teraz naciskamy F5 i F11 i jestesmy w takim fragmencie kodu:

:0040892B E8F8C5FFFF              Call 00404F28
:00408930 C6470430                mov [edi+04], 30 <--------------- TU JESTESMY
:00408934 8D45F0                  lea eax, dword ptr [ebp-10]
:00408937 BA108A4000              mov edx, 00408A10
:0040893C E8E7A8FFFF              call 00403228
:00408941 8D45EC                  lea eax, dword ptr [ebp-14]
:00408944 8BD3                    mov edx, ebx
:00408946 E8FDA9FFFF              call 00403348
:0040894B 8D45E8                  lea eax, dword ptr [ebp-18]
:0040894E 8BD3                    mov edx, ebx
:00408950 E8F3A9FFFF              call 00403348
:00408955 8B45E8                  mov eax, dword ptr [ebp-18]
:00408958 E883AAFFFF              call 004033E0
:0040895D 83F806                  cmp eax, 00000006 <----- SPAWDZENIE CZY NAME MA MIN. 6 ZNAKOW
:00408960 7D07                    jge 00408969 <---------- JEZELI TAK TO SKACZ
:00408962 E805FFFFFF              call 0040886C
:00408967 EB73                    jmp 004089DC

Widzimy, ze pod adresem 40895D wystepuje sprawdzenie dlugosci naszego Name. Musi ono miec przynajmniej 6 znakow. W innym przypadku skok nie nastapi. Wychodze z SI i uzupelniam swoj name na CtoM Cracker, teraz skok nastepuje i jestemy tutaj:

:00408969 8D45E4                  lea eax, dword ptr [ebp-1C] <--- TU JESTESMY
:0040896C 8BD3                    mov edx, ebx
:0040896E E8D5A9FFFF              call 00403348
:00408973 8B45E4                  mov eax, dword ptr [ebp-1C]
:00408976 8B55F0                  mov edx, dword ptr [ebp-10]
:00408979 E8FEAAFFFF              call 0040347C  <------------ TU WCHODZIMY
:0040897E 7557                    jne 004089D7 <--JEZELI NAME INNE NIZ "FREESTYLER" TO SKACZ
:00408980 8D45F8                  lea eax, dword ptr [ebp-08]
:00408983 BA248A4000              mov edx, 00408A24
:00408988 E89BA8FFFF              call 00403228
:0040898D 8D45F8                  lea eax, dword ptr [ebp-08]
:00408990 8B55F4                  mov edx, dword ptr [ebp-0C]
:00408993 E890A8FFFF              call 00403228
:00408998 8D45E0                  lea eax, dword ptr [ebp-20]
:0040899B 8BD7                    mov edx, edi
:0040899D E8A6A9FFFF              call 00403348
:004089A2 8B45E0                  mov eax, dword ptr [ebp-20]
:004089A5 E836AAFFFF              call 004033E0

Wchodzimy do calla pod adresem 408979 i widzimy cos takiego:

:0040347C 53                      push ebx
:0040347D 56                      push esi
:0040347E 57                      push edi
:0040347F 89C6                    mov esi, eax <--- DO ESI NASZ NAME
:00403481 89D7                    mov edi, edx <--- DO EDI FREESTYLER
:00403483 39D0                    cmp eax, edx <-- SPAWDZENIE CZY NAME TO FREESTYLER
:00403485 0F848F000000            je 0040351A
:0040348B 85F6                    test esi, esi
:0040348D 7468                    je 004034F7
:0040348F 85FF                    test edi, edi
:00403491 746B                    je 004034FE
:00403493 8B46FC                  mov eax, dword ptr [esi-04]
:00403496 8B57FC                  mov edx, dword ptr [edi-04]
:00403499 29D0                    sub eax, edx
:0040349B 7702                    ja 0040349F
:0040349D 01C2                    add edx, eax

Po wejsciu do tego calla okazuje sie, ze name nie jest dowolne. Pod adresem 403483 nastepuje porownanie naszego name z FREESTYLER. Jezeli nie jest takie to po wyjsciu z tego calla pod adresem 40897E nastepuje skok do miejsca, ktorym wywolywany jest messagebox z infem, ze dane sa nieprawidlowe. Zakladamy wiec pulapke BPX 40897E, wychodzimy z SI i jako name wpisujemy FREESTYLER i clikamy na Check. Uruchamia sie SI i widzimy, ze tym razem skok nie nastepuje. Naciskamy F10 az dojdziemy tutaj:

:004089AA 83F807                  cmp eax, 00000007 <--- SPRAWDZENIE CZY SERIAL > 7 ZNAKOW
:004089AD 7E21                    jle 004089D0 <---- SKOCZ JEZELI MNIEJSZE LUB ROWNE 7 ZNAKOW
:004089AF 807F0834                cmp byte ptr [edi+08], 34 <--- SPRAWDZENIE CZY 9 ZNAK    
                                                                 SERIALA TO 4
:004089B3 7514                    jne 004089C9 <--- JEZELI NIE TO SKACZ
:004089B5 807F0930                cmp byte ptr [edi+09], 30 <-- SPRAWDZENIE CZY 10 ZNAK 
                                                                SERIALA TO 0
:004089B9 7507                    jne 004089C2 <--- JEZELI NIE TO SKACZ
:004089BB E850FDFFFF              call 00408710 <-- INFO O ZCRACKOWANIU PROGA  
:004089C0 EB1A                    jmp 004089DC

tutaj nastepuje sprawdzenie dlugosci seriala. Okazuje sie ze musi on miec min. 8 znakow. Ja mam 9 wiec skok nie nastepuje i przechodzimy do adresu 4089AF, pod ktorym porownywany jest 9 znak naszego seriala z 4, jezeli sa rozne to nastepuje skok. U mnie jest 6 wiec zmieniam flage i oto nastepne sprawdzenie. Tym razem porownywany jest 10 znak seriala z 0. Ja mialem 9 znakowy serial wiec zmieniam flage naciskam 2xF10 i otrzymujemy info: "You cracked CrackMe v4.8 Now make a tutorial and keep up the good work!"

WNIOSKI:
Name jest tylko jedno i jest to FREESTYLER
Serial jest 10 znakowy i pierwsze 8 znakow moze byc dowolne. Natomiast dwa ostatnie to 4 i 0, np. Name: FREESTYLER
Serial: 6054593740 
lub     xxxxxxxx40 - gdzie x to dowolne znaki


									CtoM (tomciu@yoyo.pl)