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.

ap0x Crypt 0.01 - aC<br />

Posto pretpostavljam da ste naucili kako se otpakuje vecina pretnodnih<br />

pakera, sada cemo preci na otpakivanje mog licnog kriptera. Ova varijacija<br />

istog kriptera je samo ogoljena verzija onoga sto vas ceka na nightmare<br />

levelu ove knjige. Stoga bi otpakivanje aC bar na ovom nivou trebalo da<br />

bude setnja u parku :) Prvo cemo skenirati metu unpackme#1.aC.exe sa<br />

PeIDom da vidimo sta on ima da kaze o njoj. Posto mog kriptera nema u<br />

PeIDeovoj biblioteci on ce cutati po pitanju identifikacije ovoga kriptera.<br />

Nema veze neka nas to ne obeshrabri probacemo sa otpakivanje aC-a<br />

pomocu PeID generickog unpackera. Da vidimo, detect OEP - OK :), unpack<br />

OK, rebuild IAT ne zato sto IAT nije kriptovan i kada startujemo<br />

“raspakovani” fajl, crash. Naime ovo se desilo zato sto PeID nije detektovao<br />

tacan OEP. Izgleda da cemo morati ovaj kripter da odpakujemo rucno,<br />

otvorite Olly i pogledajte kako izgleda “OEP”:<br />

00401000 >/$ 60 PUSHAD<br />

00401001 |. E8 E3000000 CALL unpackme.004010E9<br />

00401006 \. C3 RET<br />

Nista specijalno, pa cemo pritiskom 2x na F7 uci u prvi CALL da vidimo sta se<br />

tu desava. Kada to uradimo naci cemo se ovde:<br />

004010E9 /$ B8 F5104000<br />

004010EE |. 50<br />

004010EF |. E8 A7FFFFFF<br />

004010F4 \. C3<br />

MOV EAX,unpackme.004010F5<br />

PUSH EAX<br />

CALL unpackme.0040109B<br />

RET<br />

Ako pogledamo sada prvu liniju videcemo da se u nju smesta adresa<br />

004010F5 ili adresa za koju je PeID mislio da je OEP. Ovo je izgleda ispala<br />

moja licna antigeneric zastita. Posto i ovo nije nista specijalno uci cemo u<br />

sledeci CALL sa F7. To ce nas dovesti ovde:<br />

0040109B /$ 50 PUSH EAX ; unpackme.004010F5<br />

0040109C |. 8BD8<br />

MOV EBX,EAX<br />

0040109E |. B9 54010000<br />

MOV ECX,154<br />

004010A3 |> 8033 44<br />

/XOR BYTE PTR DS:[EBX],44<br />

004010A6 |. 83E9 01<br />

|SUB ECX,1<br />

004010A9 |. 43<br />

|INC EBX<br />

004010AA |. 83F9 00<br />

|CMP ECX,0<br />

004010AD |.^ 75 F4<br />

\JNZ SHORT unpackme.004010A3<br />

004010AF |. 50<br />

PUSH EAX<br />

004010B0 |. E8 08000000<br />

CALL unpackme.004010BD<br />

004010B5 |. 50<br />

PUSH EAX<br />

004010B6 |. E8 7EFFFFFF<br />

CALL unpackme.00401039<br />

004010BB |. 58<br />

POP EAX<br />

004010BC \. C3<br />

RET<br />

Ovo izgleda malo ozbiljnije, ali opet nista komplikovano. Jednostavno<br />

crackme uzima adresu 004010F5 kao pocetnu i xoruje sledecih 154h bajtova<br />

sa vrednoscu 44h. Posle ovog loopa se poziva jos jedan CALL sa istim<br />

parametrom EAX. Da ne bismo izvrsavali loop 154h puta postavicemo<br />

breakpoint na adresu 00401AF odnosno na PUSH EAX komandu. Kada ovo<br />

uradimo pritisnucemo F9 da bismo dosli do naseg breakpointa. Sada cemo sa<br />

F7 uci u sledeci CALL i naci cemo se ovde:<br />

004010BD /$ 50 PUSH EAX ; unpackme.004010F5<br />

004010BE |. BB 07104000<br />

MOV EBX,unpackme.00401007<br />

004010C3 |. B9 7F000000<br />

MOV ECX,7F<br />

004010C8 |> 8033 07<br />

/XOR BYTE PTR DS:[EBX],7<br />

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

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

Saved successfully!

Ooh no, something went wrong!