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.

pokusava da otvori taj fajl. Ako fajl ne postoji ili ne moze biti otvoren onda ce<br />

se skok na adresi 00408432 izvrsiti i program ce proveriti neki drugi uredjaj.<br />

Pogledajmo sta bi se to izvrsilo kada bi fajl postojao:<br />

00408434 |. 8D85 1CFEFFFF |LEA EAX,DWORD PTR SS:[EBP-1E4]<br />

0040843A |. B9 2C854000 |MOV ECX,cd.0040852C ; ASCII "\main.xxx"<br />

0040843F |. 8B55 F8<br />

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

00408442 |. E8 D9B9FFFF |CALL cd.00403E20<br />

00408447 |. 8B95 1CFEFFFF |MOV EDX,DWORD PTR SS:[EBP-1E4]<br />

0040844D |. 8D85 2CFEFFFF |LEA EAX,DWORD PTR SS:[EBP-1D4]<br />

00408453 |. E8 0CA5FFFF |CALL cd.00402964<br />

00408458 |. 8D85 2CFEFFFF |LEA EAX,DWORD PTR SS:[EBP-1D4]<br />

0040845E |. E8 9DA2FFFF |CALL cd.00402700<br />

00408463 |. E8 B0A1FFFF |CALL cd.00402618<br />

00408468 |. 8D55 FC |LEA EDX,DWORD PTR SS:[EBP-4]<br />

0040846B |. 8D85 2CFEFFFF |LEA EAX,DWORD PTR SS:[EBP-1D4]<br />

00408471 |. E8 86A7FFFF |CALL cd.00402BFC<br />

00408476 |. 8D85 2CFEFFFF |LEA EAX,DWORD PTR SS:[EBP-1D4]<br />

0040847C |. E8 E7A7FFFF |CALL cd.00402C68<br />

00408481 |. E8 92A1FFFF |CALL cd.00402618<br />

00408486 |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4]<br />

00408489 |. BA 40854000 |MOV EDX,cd.00408540 ; ASCII "CD_main_xxx"<br />

0040848E |. E8 85BAFFFF |CALL cd.00403F18<br />

00408493 |. 75 05 |JNZ SHORT cd.0040849A<br />

00408495 |. BE 01000000 |MOV ESI,1<br />

0040849A | 8D85 2CFEFFFF |LEA EAX,DWORD PTR SS:[EBP-1D4]<br />

004084A0 |. E8 7BA5FFFF |CALL cd.00402A20<br />

004084A5 |. E8 6EA1FFFF |CALL cd.00402618<br />

Ovo i ne izgleda kao nesto posebno, nema nikakvih poredjenja i uslova sem<br />

jednog skoka na adresi 00408493 koji kada se ne izvrsi ESI postaje jednak 1.<br />

Hmmm ovo bi mozda moglo biti zanimljivo Ako pogledamo odmah ispod ove<br />

petlje videcemo ovo:<br />

004084B4 |. 85F6<br />

004084B6 |. 75 18<br />

TEST ESI,ESI<br />

JNZ SHORT cd.004084D0<br />

A ako se ovaj skok izvrsi vodi nas pravo na poruku o ubacenom CDu u CD-<br />

ROM i do “startovanja igre”. Ako pogledamo pre same petlje videcemo da je<br />

pocetno stanje ESIa jednako 0.<br />

004083B5 |. 33F6<br />

004083B7 |. BB 41000000<br />

XOR ESI,ESI<br />

MOV EBX,41<br />

Analizom ove petlje dosli smo do zakljucka da ce program ispitati sve<br />

uradjaje u kompjuteru od A: do Z: u potrazi za CDom koji na sebi ima fajl<br />

“main.xxx”, i ako je ovo sve ispunjeno i taj fajl sadrzi nesto sto se u njemu<br />

trazi (najverovatnije string “CD_main_xxx”), ako je ovo sve ispunjeno onda<br />

ce ESI biti jednak 1 kao znak da se CD sa igricom nalazi u sistemu. Ovaj<br />

problem mozemo resiti na razlicite nacine.<br />

1) Mozemo promeniti skok na adresi 004084B6 u JMP tako da se igra<br />

uvek startuje (ovo je ujedno i naljaksi nacin)<br />

2) Mozemo umesto JNE (jnz) na adresi 004084AE uneti MOV ESI,1 tako<br />

da je ESI pre same provere (TEST ESI,ESI) sigurno jednak 1<br />

3) Mozemo izmeniti adresu 004083B2 i uneti MOV ESI,1 umesto<br />

postojeceg koda i tako cemo pre same petlje ESIju dodeliti vrednost 1<br />

i izbrisati ono XOR ESI,ESI koje ESIi dodeljuje vrednost 0.<br />

4) Postoji mnogo nacina, vi kao vezbu uz ovo poglavlje smislite neki koji<br />

ja nisam ovde nabrojao.<br />

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

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

Saved successfully!

Ooh no, something went wrong!