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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

PUSH komandi koje prethode CALLu koji poziva Windowsovu MessageBoxA<br />

API funkciju. Otvoricemo metu pomocu Ollyja i videcemo ovo:<br />

00410556 > $ B8 30054100 MOV EAX,NAG-Cryp.00410530<br />

0041055B . B9 25000000 MOV ECX,25<br />

00410560 > 8000 25 ADD BYTE PTR DS:[EAX],25<br />

00410563 . 8028 26 SUB BYTE PTR DS:[EAX],26<br />

00410566 . 8030 27 XOR BYTE PTR DS:[EAX],27<br />

00410569 . 83C0 01 ADD EAX,1<br />

0041056C .^ E2 F2<br />

LOOPD SHORT NAG-Cryp.00410560<br />

0041056E . B8 00044100 MOV EAX,NAG-Cryp.00410400<br />

00410573 . BA 00000000 MOV EDX,0<br />

00410578 > 0310 ADD EDX,DWORD PTR DS:[EAX]<br />

0041057A . 3D 54054100 CMP EAX,NAG-Cryp.00410554<br />

0041057F . 74 03<br />

JE SHORT NAG-Cryp.00410584<br />

00410581 . 40 INC EAX<br />

00410582 .^ EB F4 JMP SHORT NAG-Cryp.00410578<br />

00410584 > 81FA D82F58B4 CMP EDX,B4582FD8<br />

0041058A .^ 74 A4<br />

JE SHORT NAG-Cryp.00410530<br />

0041058C . 6A 30 PUSH 30<br />

0041058E . 68 30064100 PUSH NAG-Cryp.00410630<br />

00410593 . 68 37064100 PUSH NAG-Cryp.00410637<br />

00410598 . 6A 00 PUSH 0<br />

0041059A . E8 4940FFFF CALL <br />

0041059F . E9 8A000000 JMP NAG-Cryp.0041062E<br />

Kao sto vidimo ovde postoji jedan jako dugacak LOOPD koji se nalazi na<br />

adresi 0041056C. Da ne bismo izvrsavali ovaj stvarno dugacak LOOP<br />

postavicemo jedan break-point ispod nje i pritisnucemo F9. Ovo ce nas<br />

odvesti do adrese 0041056E. Dalje cemo nastaviti da izvrsavamo kod sa F8<br />

sve dok ne dodjemo do 00410582. Kao sto vidimo ovde se nalazi jedan JMP<br />

skok koji ce nas vratiti gore u kod. Preko ovog skoka vodi samo JE SHORT<br />

00410584 skok, koji ce se izvrsiti samo ako je CMP EAX,00410554, posle<br />

cega cemo se naci na adresi 00410584, na kojoj se nalazi komanda CMP<br />

EDX,B4582FD8. Sta ovo znaci Ovo znaci da je program koristio gornji deo<br />

koda da izracuna checksum dela koda koji pocinje na adresi 00410400 a<br />

zavrsava se ovde 00410554. Ovih poredjenja kroz kod ce biti mnogo i one su<br />

tu da provere da li smo, kako i kada patchovali NAG. Posto ne smemo da<br />

patchujemo checksum provere onda cemo morati da smislimo gde cemo<br />

patchovati usput! Konacno cemo doci do skoka na adresi 0041058A koji ce<br />

nas odvesti na deo koda koji se skoro dekriptovao (u onom prvom LOOPu):<br />

00410530 > /B8 01044100 MOV EAX,NAG-Cryp.00410401<br />

00410533 41 DB 41 ; CHAR 'A'<br />

00410534 00 DB 00<br />

00410535 BA DB BA<br />

00410536 00 DB 00<br />

Posto ovaj deo koda nije analiziran samo cemo ga dodatno analizirati<br />

pritiskom na CTRL + A posle cega ovaj postaje malo citljiviji.<br />

00410530 > /B8 01044100 MOV EAX,NAG-Cryp.00410401<br />

00410535 . |BA 00000000 MOV EDX,0<br />

0041053A . |B9 2A010000 MOV ECX,12A<br />

0041053F > |0310<br />

ADD EDX,DWORD PTR DS:[EAX]<br />

00410541 . |8030 29 XOR BYTE PTR DS:[EAX],29<br />

00410544 . |83C0 01 ADD EAX,1<br />

00410547 .^|E2 F6 LOOPD SHORT NAG-Cryp.0041053F<br />

00410549 . |81FA 180C39E2 CMP EDX,E2390C18<br />

0041054F .^|0F84 D4FEFFFF JE NAG-Cryp.00410429<br />

00410555 . |C3 RET<br />

I kao sto se posle analize vidi i ovaj novi deo koda se koristi za dekripciju i to<br />

adresa od 00410401 pa sledecih 12A bajtova. Kao sto vidimo i ovde se vrsi i<br />

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

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

Saved successfully!

Ooh no, something went wrong!