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