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.
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