07.02.2015 Views

The Art of Reversing by Ap0x - Tutoriali.org

The Art of Reversing by Ap0x - Tutoriali.org

The Art of Reversing by Ap0x - Tutoriali.org

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Keygening Scarabee #4<br />

Zadatak:<br />

Relativno lak zadatak ...\Cas12\crackme#4.exe treba reversovati tako da se<br />

ukljuci Check dugme i da posle pritiska na ovo dugme program prikazuje<br />

poruku da je program registrovan. Dozvoljeno je patchovati samo bajtove<br />

koji sluze za iskljucivanje / ukljucivanje dugmeta. Pored ovoga treba otkriti<br />

nacin na koji se racuna serijski broj i napraviti keygenerator.<br />

Resenje:<br />

Da bismo ukljucili dugme Check iskoristicemo program DeDe. Ako nemate<br />

ovaj program samo patchujete program na objasnjeni nacin.<br />

Ucitajte metu u DeDe i u procedurama izaberiti FormCreate i videcete<br />

sledece:<br />

0044FBA8 33D2 xor edx, edx<br />

* Reference to control TForm1.Button1 : TButton<br />

0044FBAA 8B80F0020000 mov eax, [eax+$02F0]<br />

0044FBB0 8B08 mov ecx, [eax]<br />

* Reference to method TButton.SetEnabled(Boolean)<br />

0044FBB2 FF5164 call dword ptr [ecx+$64]<br />

0044FBB5 C3<br />

ret<br />

Kao sto se vidi iz prilozenog kada se kreira forma dugme se iskljuci pozivom<br />

na komandu CALL DWORD ptr[ecx+$64], zbog cega cemo NOPovati ovaj<br />

CALL. Posle ovoga mozemo otvoriti Olly i nastaviti sa reversingom ove mete.<br />

Potrazicemo sve moguce stringove koji bi nam ukazali na to gde se to racuna<br />

serijski broj. Videcemo ovu zanimljivu referencu:<br />

Text strings referenced in crackme#:CODE, item 1850<br />

Address=0044FB5D<br />

Disassembly=MOV EDX,crackme#.0044FB98<br />

Text string=ASCII " Registered!"<br />

koja ce nas odvesti ovde:<br />

0044FB5D |. BA 98FB4400 MOV EDX,crackme#.0044FB98<br />

; ASCII " Registered!"<br />

0044FB62 |. E8 4DF1FDFF CALL crackme#.0042ECB4<br />

Ovo znaci da se CALL koji se koristi za racunanje serijskog broja nalazi<br />

izmedju adresa 0044FA64 i 0044FB8C.<br />

Postavicemo break-point na adresu 0044FA64 kako bismo analizirali deo<br />

koda koji sluzi za proveru serijskog broj i pritisnucemo dugme Check u<br />

samom programu posle cega cemo zavrsiti na nasem break-pointu. Proci<br />

cemo kroz kod 1x pritiskajuci F8 da bismo saznali sto vise o kodu za proveru<br />

serijskog broja. Primeticemo sledece:<br />

0044FA8D |. 8B45 F8<br />

MOV EAX,DWORD PTR SS:[EBP-8] ; U EAXu je putanja do fajla<br />

0044FAA3 |. 83F8 15 CMP EAX,15 ; U EAXu je duzina putanje<br />

0044FAA6 |. 0F85 BB000000 JNZ crackme#.0044FB67<br />

; EAX se poredi sa 15h<br />

Kada se ovaj skok izvrsi zavrsicemo odmah ispod poruke o tacnom serijskom<br />

broju zbog cega se ovaj skok nikada ne sme izvrsiti. Zbog ovoga cemo ovaj<br />

crackme iskopirati u folder c:\aaaaaaaaaaaaaaaaaa i reversovacemo ga tu.<br />

Ovo radimo jer duzina putanje do exe fajla mora da bude 15h ili 21<br />

decimalno a posto se racuna i c:\ u duzinu putanje folder mora biti bas ovaj<br />

ili neki drugi sa istom duzinom. Sada cemo pomocu Ollyja otvoriti fajl koji se<br />

nalazi na ovoj novoj lokaciji. Primeticete da se sada ne izvrsava skok na<br />

adresi 0044FAA6 i da cemo malo ispod toga naici na sledece provere:<br />

0044FAAC |. 8B45 F8<br />

0044FAAF |. 8078 09 5C<br />

MOV EAX,DWORD PTR SS:[EBP-8]<br />

CMP BYTE PTR DS:[EAX+9],5C<br />

<strong>The</strong> <strong>Art</strong> <strong>of</strong> <strong>Reversing</strong> <strong>by</strong> <strong>Ap0x</strong> Page 269 <strong>of</strong> 293

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!