The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
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