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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

imamo pravu vrednost sa SecData1 tako da nam ostaje jos samo da resimo<br />

poslednji deo ove mete, odnosno da pronadjemo poslednju vrednost<br />

SecData2. Ona direktno zavisi od dva uneta parametara: imena i SecData1.<br />

Ovo se vidi na sledecem isecku koda:<br />

004015B5 |> \8DB5 60FFFFFF LEA ESI,DWORD PTR SS:[EBP-A0] ; Ucitaj SecData2<br />

004015BB |. 8D3D 4D324000 LEA EDI,DWORD PTR DS:[40324D] ; Ucitaj ime<br />

004015C1 |. 33C0<br />

XOR EAX,EAX<br />

004015C3 |. 33D2<br />

XOR EDX,EDX<br />

004015C5 |> 8A17 /MOV DL,BYTE PTR DS:[EDI] /* Loop1<br />

004015C7 |. 84D2<br />

|TEST DL,DL<br />

004015C9 |. 74 0A<br />

|JE SHORT Crackme3.004015D5<br />

004015CB |. 8A1E<br />

|MOV BL,BYTE PTR DS:[ESI]<br />

004015CD |. 03D3<br />

|ADD EDX,EBX<br />

004015CF |. 03C2<br />

|ADD EAX,EDX<br />

004015D1 |. 46<br />

|INC ESI<br />

004015D2 |. 47<br />

|INC EDI<br />

004015D3 |.^ EB F0 \JMP SHORT Crackme3.004015C5 */<br />

004015D5 |> 8985 58FFFFFF MOV DWORD PTR SS:[EBP-A8],EAX<br />

004015DB |. 33C0<br />

XOR EAX,EAX<br />

004015DD |. 33C9<br />

XOR ECX,ECX<br />

004015DF |. 33D2<br />

XOR EDX,EDX<br />

004015E1 |. B1 08<br />

MOV CL,8<br />

004015E3 |. 8D75 80 LEA ESI,DWORD PTR SS:[EBP-80] ; Ucitaj SecData1<br />

004015E6 |> 8A16 /MOV DL,BYTE PTR DS:[ESI] /* Loop 2<br />

004015E8 |. 84C9<br />

|TEST CL,CL<br />

004015EA |. 74 06<br />

|JE SHORT Crackme3.004015F2<br />

004015EC |. 03C2<br />

|ADD EAX,EDX<br />

004015EE |. 46<br />

|INC ESI<br />

004015EF |. 49<br />

|DEC ECX<br />

004015F0 |.^ EB F4 \JMP SHORT Crackme3.004015E6 */<br />

004015F2 |> 0385 58FFFFFF ADD EAX,DWORD PTR SS:[EBP-A8]<br />

Prvi loop radi sabiranje vrednosti koje imaju karakteri iz imena i karakteri od<br />

SecData2 podatka. Ovaj loop se ponavlja onoliko puta koliko nase uneto ime<br />

ima slova. Rezultat ovog loopa se privremeno snima na adresi EBP-A8, posle<br />

cega usledjuje drugi loop koji samo sabira vrednosti koje imaju slova iz<br />

podatka SecData1. Posle ovoga se na vrednost EAXa koja je postavljena u<br />

drugom loopu dodaje vrednost koja je privremeno snimljena na EBP-A8.<br />

Kada se ove vrednosti izracunaju sledi deo koda koji proverava tacnost<br />

unetih podataka i on izgleda bas ovako:<br />

004015F8 |. 33C9<br />

XOR ECX,ECX<br />

004015FA |. 66:B9 5A00 MOV CX,5A<br />

004015FE |. 66:F7F1<br />

DIV CX<br />

00401601 |. 8915 6D324000 MOV DWORD PTR DS:[40326D],EDX<br />

00401607 |. D905 94204000 FLD DWORD PTR DS:[402094] ; 24.010 - Konstanta<br />

0040160D |. D835 88204000 FDIV DWORD PTR DS:[402088] ; 100.000 - Konstanta<br />

00401613 |. DA05 6D324000 FIADD DWORD PTR DS:[40326D] ; Ostatak pri deljenju<br />

00401619 |. D80D 8C204000 FMUL DWORD PTR DS:[40208C] ; 3.141593 - Pi<br />

0040161F |. D835 90204000 FDIV DWORD PTR DS:[402090] ; 180.000<br />

00401625 |. D9FF FCOS<br />

00401627 |. D9E1 FABS<br />

00401629 |. D80D 84204000 FMUL DWORD PTR DS:[402084] ; 7479.00 - Konstanta<br />

0040162F |. D80D 88204000 FMUL DWORD PTR DS:[402088] ; 100.000 - Konstanta<br />

00401635 |. D9FC FRNDINT ; Zaokruzivanje<br />

00401637 |. D815 80204000 FCOM DWORD PTR DS:[402080] ; Poredjenje sa 313233<br />

0040163D |. 9B<br />

WAIT<br />

0040163E |. DFE0<br />

FSTSW AX<br />

00401640 |. 9E SAHF<br />

00401641 |. 75 06 JNZ SHORT Crackme3.00401649<br />

Ocigledno je da nam ovde treba bar osnovno poznavanje trigonometrije kako<br />

bismo zavrsili sa resavanjem ovog crackmea. Ali ne zurimo toliko, da vidimo<br />

sta se prvo desava sa izracunatim sadrzajem EAXa.<br />

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

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

Saved successfully!

Ooh no, something went wrong!