The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
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