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