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.

ReCrypt 0.80<br />

Najnovija verzija ReCrypta je donela jos par veoma zanimljivih novina<br />

koje su dizajnirane da nas sprece da otpakujemo ovu metu. Bilo kako bilo<br />

zahvaljujuci Cruddu koji mi je poslao najnoviju verziju ovog kriptera<br />

naucicemo nesto novo. Meta za ovaj deo poglavlja je Genesis.ReCrypt80.exe i<br />

nalazi se u folderu Cas10. Kada otvorimo ovu metu pomocu Ollyja videcemo<br />

da format .exe fajla ne zadovoljava PE standard zbog cega cemo se naci<br />

ovde:<br />

77F767CE C3 RET<br />

Posto zbog ove cinjenice necemo biti u mogucnosti da pristupamo sekcijama<br />

moracemo da otvorimo fajl pomocu LordPEa da bismo videli u kojoj sekciji se<br />

nalazi OEP i na kojoj je on adresi. Dakle adresa OEPa je 00405000 a on se<br />

nalazi u poslednjoj sekciji RE-Crypt. Zbog ovoga cemo pritisnuti CTRL+G u<br />

Ollyju i otici cemo na adresu 00405000, na kojoj cemo postaviti obican<br />

breakpoint. Klikom na F9 stizemo do naseg breakpointa, odnosno nalazimo<br />

na packer OEPu:<br />

00405000 60 PUSHAD<br />

00405001 E8 00000000 CALL Genesis_.00405006<br />

00405006 5D POP EBP<br />

00405007 81ED F31D4000 SUB EBP,Genesis_.00401DF3<br />

Sada bismo trebali da postavimo memorijski breakpoint na glavnu sekciju, ali<br />

posto nismo u mogucnosti to da uradimo (Olly ne vidi ni jednu sekciju)<br />

iskoristicemo nas STACK trik. Dok se nalazimo na PUSHAD komandi<br />

pritisnucemo F8 posle cega ce ESP registar dobiti novu vrednost. Ispraticemo<br />

tu vrednost u dumpu posle cega cemo selektovati prva cetiri bajta u hex<br />

dump prozoru:<br />

0012FFA4 FF FF FF FF 6A 16 F5 77 ....j..w<br />

0012FFAC F0 FF 12 00 C4 FF 12 00 ........<br />

na ova cetiri cemo postaviti Hardware breakpoint -> On access -> dword…<br />

Kada sada pokusamo da startujemo metu klikom na F9 doci cemo do sledece<br />

lokacije:<br />

0040501B 60 PUSHAD<br />

0040501C E8 00000000 CALL Genesis_.00405021<br />

Nismo bas daleko otisli, ali ako kliknemo na F9 jos jedan put naci cemo se<br />

ovde:<br />

004053F6 50 PUSH EAX ; Genesis_.00401000<br />

004053F7 33C5 XOR EAX,EBP<br />

004053F9 E8 1D000000 CALL Genesis_.0040541B<br />

Naravno vidimo da EAX sadrzi vrednost koja moze biti ili vrednost prve<br />

adrese u prvoj sekciji ili adresa OEPa. Iz ovog razloga cemo traceovati kroz<br />

kod sa F7, traceujuci kroz CALL na adresi 004053F9, stizuci do sledeceg<br />

koda:<br />

0040541B 58 POP EAX ; Genesis_.004053FE<br />

0040541C C3 RET<br />

Sada je vec ocigledno da je 00401000 pravi OEP iz razloga sto ce se posle<br />

izvrsavanja komande PUSH EAX, adresa 00401000 naci na STACKu, a posle<br />

izvrsavanja RET komande i sam program ce skociti na adresu 00401000, na<br />

kojoj se bez sumnlje nalazi pravi OEP:<br />

00401000 6A 00 PUSH 0<br />

00401002 E8 D9000000 CALL Genesis_.004010E0 ; JMP to kernel32.GetModuleHandleA<br />

00401007 A3 40304000 MOV DWORD PTR DS:[403040],EAX<br />

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

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

Saved successfully!

Ooh no, something went wrong!