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.

ASProtect 2.0x<br />

ASProtect 2.0x je novija verzija vec opisivanog protektora. Naravno i<br />

ovaj put ASProtect koristi IsDebuggerPresent API kako bi proverio da li je<br />

zasticena meta otvorena pomocu nekog debugera pa cemo morati i ovaj put<br />

da iskoristimo HideOlly plugin. Meta koju cemo ovaj put otpakivati zasticena<br />

je sa svim opcijama osim sa opcijom koja “krade kod” sa OEPa originalnog<br />

programa.Ova meta se nalazi u folderu Cas10 a zove se kgme2.ASProtect2.exe.<br />

Kada otvorimo metu pomocu Ollyja videcemo sledeci OEP:<br />

00401000 >/$ 68 01504000 PUSH kgme2_AS.00405001<br />

00401005 |. E8 01000000 CALL kgme2_AS.0040100B<br />

0040100A \. C3<br />

RET<br />

Sada bi trebalo da podesimo Olly kako bi smo sto brze dosli do OEPa<br />

otpakovane mete. Otvoricemo Debugging options prozor klikom na ALT+O i<br />

iskljuciti sve exceptione u Exceptions tabu osim memory access violation.<br />

Sada mozemo da pokusamo da startujemo metu, ali kao sto cemo videti<br />

meta se nece startovati i mi cemo se umesto na OEPu naci ovde:<br />

00A7B497 90 NOP<br />

00A7B498 EB 01 JMP SHORT 00A7B49B<br />

00A7B49A 6966 81 FE47467> IMUL ESP,DWORD PTR DS:[ESI-7F],744647FE<br />

Olly je zastao ovde jer je naisao na INT3 komandu. Pritisnucemo SHIFT+F9<br />

kako bismo presli preko ovog exceptiona. Naizgled ce se ciniti da se nismo<br />

pomerili sa ove adrese ali to nije tacno, jer iako smo i dalje na ovoj adresi<br />

ASProtect je uspesno otpakovao sve sekcije. Sada mozemo da presretnemo<br />

izvrsenje otpakovanog koda postavljajuci memorijski breakpoint on access na<br />

glavnu .CODE sekciju. Kada ovo uradimo i ponovo pritisnemo SHIFT+F9 naci<br />

cemo se na pravom OEPu nase mete, to jest naci cemo se ovde:<br />

00401000 >/$ 25 0000FF00 AND EAX,0FF0000<br />

00401005 |. 6A 00 PUSH 0<br />

00401007 |. 68 1D104000 PUSH kgme2_AS.0040101D<br />

0040100C |. 6A 00 PUSH 0<br />

0040100E |. 6A 01 PUSH 1<br />

00401010 |. 50 PUSH EAX<br />

00401011 |. E8 5C040000 CALL kgme2_AS.00401472<br />

00401016 |. 6A 00 PUSH 0 ; /ExitCode = 0<br />

00401018 \. E8 49040000 CALL kgme2_AS.00401466 ; \ExitProcess<br />

Ovde mozemo da uradimo dump, ali ce popravka importa biti malo teza.<br />

Zasto pitate se Pa iako ce ImpRec pronaci sve importe bez koriscenja<br />

Traceinga ili bilo kakvog dodatnog plugina, JMP pozivi ka API lokacijama ce<br />

biti unisteni. Jos jedan trik od strane ASProtecta koji moramo da<br />

prevazidjemo.<br />

Da bismo ovo uradili popravicemo IAT pomocu ImpReca na sasvim normalan<br />

nacin pa cemo ne gaseci ImpRec otvoriti fajl koji je ImpRec popravio<br />

(najcesce dumped_.exe) pomocu Ollyja. Posto pokusavamo da popravimo IAT<br />

traceovacemo kroz kod sa F7 sve do poziva ka prvom APIju. Dakle uci cemo<br />

u sledeci CALL:<br />

00401005 |. 6A 00 PUSH 0<br />

00401007 |. 68 1D104000 PUSH dumped_.0040101D<br />

0040100C |. 6A 00 PUSH 0<br />

0040100E |. 6A 01 PUSH 1<br />

00401010 |. 50 PUSH EAX<br />

00401011 |. E8 5C040000 CALL dumped_.00401472

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

Saved successfully!

Ooh no, something went wrong!