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.

0040104A . 6A 0A<br />

PUSH 0A<br />

0040104C . FF35 AC314000 PUSH DWORD PTR DS:[4031AC]<br />

00401052 . 6A 00 PUSH 0<br />

00401054 . FF35 A8314000 PUSH DWORD PTR DS:[4031A8]<br />

0040105A . E8 0B000000 CALL 0040106A<br />

Posle izvrsavanja ovog CALLa glavni prozor mete ce se pojaviti na<br />

ekranu. Posto znamo da se NAG izvrsava nakon izlaska iz ove mete<br />

postavicemo jedan obican break-point (pritiskom na F2) na sledecu adresu<br />

koja se nalazi odmah ispod CALLa koji je zaduzen za prikazivanje ovog<br />

prozora, postavicemo break-point na adresu 0040105F.<br />

0040105F |. E8 61010000 CALL 004011C5<br />

00401064 |. 50 PUSH EAX ; /ExitCode<br />

00401065 \. E8 D6010000 CALL ; \ExitProcess<br />

Naravno posle zatvaranja glavnog prozora nase mete zavrsicemo na<br />

nasem break-pointu. Ovog puta cemo pritisnuti F7 da bismo usli u CALL na<br />

adresi 0040105F. Zasto Zato sto se posle ovog CALLa nalazi jos<br />

samo kernel32.ExitProcess CALL koji sluzi za gasenje nase mete. Iz<br />

ovog razloga zakljucujemo da se drugi NAG nalazi u CALLu sa adrese<br />

0040105F. Kada udjemo u taj CALL videcemo sledece:<br />

004011C5 /$ 6A 00 PUSH 0 ; /Style = MB_OK<br />

004011C7 |. 68 66304000 PUSH 00403066 ; |Title = "..."<br />

004011CC |. 68 40304000 PUSH 00403040 ; |Text = "... nag ..."<br />

004011D1 |. 6A 00 PUSH 0 ; |hOwner = NULL<br />

004011D3 |. E8 3E000000 CALL ; \MessageBoxA<br />

004011D8 \. C3<br />

RET<br />

I kao sto vidimo bili smo u pravu! Trazeni NAG se zaista nalazi u<br />

ovom CALLu i njega cemo kao i prvi NAG ukloniti na isti nacin, a posle<br />

patchovanja nasa meta ce izgledati ovako:<br />

004011C5 90 NOP<br />

004011C6 90 NOP<br />

004011C7 90 NOP<br />

004011C8 90 NOP<br />

004011C9 90 NOP<br />

004011CA 90 NOP<br />

...<br />

004011D1 90 NOP<br />

004011D2 90 NOP<br />

004011D3 90 NOP<br />

004011D4 90 NOP<br />

004011D5 90 NOP<br />

004011D6 90 NOP<br />

004011D7 90 NOP<br />

004011D8 \. C3<br />

RET<br />

Pored ovog nacina patchovanja NAGova postoji i drugi nacin<br />

patchovanja. Ovaj drugi nacin se koristi u slucaju da program broji<br />

NOPove koji se nalaze u njegovom kodu. Ovaj patcherski trik se ogleda u<br />

patchovanju zeljenih komandi u novi niz komandi koje cine dve ASM<br />

komande INC EAX, DEC EAX... Prva komanda povecava vrednost EAXa za<br />

jedan a druga smanjuje tu vrednost za jedan. Ovde samo treba paziti da<br />

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

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

Saved successfully!

Ooh no, something went wrong!