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.

dodelio status: Full Access, Read/Write, Read only,… Posto se nas inline<br />

patch rusi pri pokusaju da upise nas patch u glavnu sekciju zakljucujemo da<br />

je glavna sekcija zakljucana za pisanje od strane VirtualProtecta. Ovo bi<br />

trebalo da bude lako iz razloga sto se VirtualProtect vec nalazi u import<br />

tablici, odnosno ne ucitava se dinamicki. Logicno je da prvo sto nam pada na<br />

pamet je postavljanje break-pointa na taj import, ali to nije pravo resenje,<br />

pogotovo ne kada se radi o pakerima. Posto Olly nece zastati prilikom<br />

postavljanja break-pointa, moramo da primenimo sledeci trik.<br />

Naime posto se import vec nalazi u fajlu ocigledno je da program nema<br />

razloga za dinamickim ucitavanjem importa, odnosno packer mora prilikom<br />

pozivanje VirtualProtecta pristupiti adresi na kojoj se on nalazi. Ako<br />

pogledamo nasu tablicu importa videcemo da se VirtualProtect nalazi na<br />

adresi 004075B8 zbog cega bi bilo najbolje da postavimo jedan break-point<br />

na toj adresi. Odnosno necemo postaviti obican break-point na toj adresi,<br />

nego cemo otici na tu adresu u Hex dumpu kako bismo postavili memorijski<br />

break-point on access. Zasto ovo radimo Pa ako pogledate hex dump:<br />

004075B8 >9E 16 E6 77 72 AC E7 77 ...wr..w<br />

004075C0 >CB 15 E8 77 FD 98 E7 77 ...w...w<br />

videcete da je DWORD na adresi 004075B8 u stvari pointer ka adresi<br />

77E6169E, koja je sigurno lokacija APIja u kernel32.dll fajlu. Posle<br />

postavljanja memorijskog break-pointa na adresu 004075B8 i klika na F9:<br />

004078F5 74 28 JE SHORT crackme_.0040791F<br />

004078F7 43 INC EBX<br />

004078F8 8DB5 6DFEFFFF LEA ESI,DWORD PTR SS:[EBP-193]<br />

004078FE 8B16 MOV EDX,DWORD PTR DS:[ESI]<br />

00407900 56 PUSH ESI<br />

00407901 51 PUSH ECX<br />

00407902 53 PUSH EBX<br />

00407903 52 PUSH EDX<br />

00407904 56 PUSH ESI<br />

00407905 FF33 PUSH DWORD PTR DS:[EBX]<br />

00407907 FF73 04 PUSH DWORD PTR DS:[EBX+4]<br />

0040790A 8B43 08 MOV EAX,DWORD PTR DS:[EBX+8]<br />

0040790D 03C2 ADD EAX,EDX<br />

0040790F 50 PUSH EAX<br />

00407910 FF95 11FFFFFF CALL NEAR DWORD PTR SS:[EBP-EF] ; kernel32.VirtualProtect<br />

00407916 5A POP EDX<br />

00407917 5B POP EBX<br />

00407918 59 POP ECX<br />

00407919 5E POP ESI<br />

0040791D ^ E2 E1<br />

LOOPD SHORT crackme_.00407900<br />

0040791F 61 POPAD<br />

00407920 9D POPFD<br />

00407921 - E9 9A99FFFF JMP crackme_.004012C0

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

Saved successfully!

Ooh no, something went wrong!