Zpět na seznam článků     Číst komentáře (0)     Verze pro tisk

Cracking4neWBies - Lekce č.3

Autor: DjH   
14.8.2007

Cracking pro začátečníky...potřetí :-)


Cracking4neWBies

Lekce č.3

Serial fishing v dalším CrackMe


Jedno CMe máme za sebou, jdeme na druhé.

Balíček pro tuto lekci seženete zde

Otevřeme si naše nové CMe cm_id5.exe, tentokráte v PEiD, protože o něm přece nic nevíme…:-)
Jdeme tedy na to úplně od začátku.
PEiD nám oznámí, že CMe je psané v Delphi 4.0 – 5.0. Natáhneme tedy CMe do DeDe…
Najedeme si do Procedures->Unit1->Button1Click…
Vidíme přibližně toto (hned začátek…):

00441860 55 push ebp
00441861 8BEC mov ebp, esp
00441863 81C4D8FEFFFF add esp, $FFFFFED8
00441869 53 push ebx
0044186A 56 push esi
0044186B 57 push edi
0044186C 33C9 xor ecx, ecx
0044186E 898DF0FEFFFF mov [ebp+$FFFFFEF0], ecx
00441874 894DF4 mov [ebp-$0C], ecx
00441877 8BD8 mov ebx, eax
00441879 BE30384400 mov esi, $00443830
0044187E 33C0 xor eax, eax
00441880 55 push ebp
00441881 68651B4400 push $00441B65

***** TRY
|
00441886 64FF30 push dword ptr fs:[eax]
00441889 648920 mov fs:[eax], esp
0044188C 33C0 xor eax, eax
0044188E 8906 mov [esi], eax
00441890 8D55F4 lea edx, [ebp-$0C]

* Reference to control TForm1.Edit1 : TEdit //Čtení námi zadaného seriálu z Edit1
|
00441893 8B83C4020000 mov eax, [ebx+$02C4] //Zde si v Olly nastavíme BP

Tady vidíte největší výhodu DeDe. Zjistíte přesné adresy, kde se co děje. Tady jsme třeba viděli co se přesně děje po kliknutí na Button1, vyčetli jsme, že se provádí čtení z Edit1. Kdybychom jeliSpustíme Olly a otevřeme v něm toto CMe a nastavíme teda BreakPoint na adresu 00441893.
Nastavíme nějaké jméno: DjHacker
a sériové číslo : 123456789
a klikneme na „Validate…“
Zastaví se nám to na zadaném BPintu…

00441893 . 8B83 C4020000 MOV EAX, DWORD PTR DS:[EBX+2C4]
00441899 . E8 CE19FEFF CALL cm_id5.0042326C
0044189E . 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-C]
004418A1 . E8 5622FCFF CALL cm_id5.00403AFC
004418A6 . 83F8 05 CMP EAX, 5 //delka jmena >5 znaku
004418A9 . 0F8C 95020000 JL cm_id5.00441B44
004418AF . 8D55 F4 LEA EDX, DWORD PTR SS:[EBP-C]
004418B2 . 8B83 C4020000 MOV EAX, DWORD PTR DS:[EBX+2C4]

Krokujeme pomocí F8, nesledujeme kód, sledujeme registry…krokujeme tak dlouho, než nenarazíme na adresu
00441B0D . 8B15 38384400 MOV EDX, DWORD PTR DS:[443838]
Tady se do EDX ukládá správné s/n. Po tomhle kroku si ho v EDX přečtěte a opište třeba do poznámkového bloku.
Jak jste si všimli, nesoustředili jsme se na kód, ale na registry a paměť. Sériové číslo se většinou ukládá do procesorových registrů, ale není to podmínkou. Až narazíte někde na nějaký podezřelý string „EKI-4568“ nebo „9856-125-44459“ nebo tak nějak, toto jsou samozřejmě jen příklady, tak se na tento kód soustřeďte, ze začátku vám to řekne instinkt kde je s/n, později to budete muset vyhledávat tak, že prošmejdíte CALLy (Trace into [F7])…
Zadáme tedy jméno: DjHacker
a číslo : EKA-1497913
Zkuste si schválně dát BP na adresu 00441B13 a skočte do toho Callu [F7]čkou.

00441B0D . 8B15 38384400 MOV EDX, DWORD PTR DS:[443838] //správné s/n do EDX
00441B13 . E8 F420FCFF CALL cm_id5.00403C0C //Do tohoto callu skočte
00441B18 75 07 JNZ SHORT cm_id5.00441B21 //až vyskočíte z callu, bude nastaven Zero-Flag, jestli se bude rovnat nule, zadali jste špatné číslo, jestli jedničce, skočíte na oznámení Dobrého s/n…


V CALLu uvidíte asi toto:

00403C0C /$ 53 PUSH EBX
00403C0D |. 56 PUSH ESI
00403C0E |. 57 PUSH EDI
00403C0F |. 89C6 MOV ESI, EAX
00403C11 |. 89D7 MOV EDI, EDX
00403C13 |. 39D0 CMP EAX, EDX //porovnej EAX (naše zadané s/n) s EDX (správné s/n)
00403C15 |. 0F84 8F000000 JE cm_id5.00403CAA //jestli nesouhlasí, okamžitě skoč na BadBoy, jinak ještě kontroluj
00403C1B |. 85F6 TEST ESI, ESI
00403C1D |. 74 68 JE SHORT cm_id5.00403C87

Do slovníku:
BadBoy – kód s upozorněním na špatné s/n
GoodBoy – kód s oznámením o úspěchu…

Příště si najdeme s/n v CMe č.1 od sF...:-)

Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 1/1

1  2  3  4  5    
(známkování jako ve škole)