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.

ReCrypt 0.74<br />

Da bismo poceli sa otpakivanjem programa otvoricemo metu<br />

packed.ReCrypt074.exe pomocu Ollyja. Ova novija verzija pakera donosi<br />

znacajan broj novina. Za pocetak importi se sada dinamicki alociraju a koristi<br />

se i API redirekcija kako bi se dodatno otezala popravka IATa, a i sam kod za<br />

odlazak na OEP je razbacan po CALLovima. Ali bez obzira na ovo mi cemo<br />

iskoristiti ovaj paker kako bismo naucili kada da rucno popravimo importe i<br />

kako da otpakujemo jos jedan paker.<br />

Samo otpakivanje ovog pakera ce biti izuzetno lako ako se drzimo<br />

naseg sablonskog postupka. Dakle postavicemo memorijski breakpoint on<br />

access na glavnu .CODE sekciju da bismo posle pritiska na F9 zavrsili ovde:<br />

004086CD 8B17 MOV EDX,DWORD PTR DS:[EDI]<br />

004086CF 81F2 13151415 XOR EDX,15141513<br />

004086D5 8917 MOV DWORD PTR DS:[EDI],EDX<br />

004086D7 83C7 04 ADD EDI,4<br />

004086DA 83C0 FC ADD EAX,-4<br />

004086DD ^ EB E9<br />

JMP SHORT packed_R.004086C8<br />

004086DF C9 LEAVE<br />

004086E0 C2 0400 RET 4<br />

Posto ce ovaj kod za dekripciju vise puta pristupati glavnoj .CODE sekciji<br />

potrebno je da uklonimo nas memorijski breakpoint i postavimo obican<br />

breakpoint na RET 4 komandu. Naravno posle pritiska na F9 naci cemo se na<br />

RET 4 komandi. Sada mozemo ponovo da postavimo breakpoint na glavnu<br />

sekciju, posto je ceo kod dekriptovan, i pristisnemo F9 kako bismo se nasli<br />

na OEPu dekriptovane mete. To jest naci cemo se ovde:<br />

00401416 /. 55 PUSH EBP<br />

00401417 |. 8BEC MOV EBP,ESP<br />

00401419 |. 6A FF PUSH -1<br />

0040141B |. 68 E0504000 PUSH packed_R.004050E0<br />

00401420 |. 68 0C204000 PUSH packed_R.0040200C ; SE handler installation<br />

00401425 |. 64:A1 0000000> MOV EAX,DWORD PTR FS:[0]<br />

0040142B |. 50<br />

PUSH EAX<br />

Posto je ovo ocigledno OEP ovde cemo uraditi memory dump i popravku<br />

importa. Ono sto je specificno za ovaj protektor je API redirekcija, to jest<br />

specifican je nacin na koji se ona izvodi tako da cemo morati da primenimo<br />

manje intervencije u ImpRecu kako bismo u potputnosti popravili IAT. Dakle<br />

posto pritisnete GetImport pojavice se netacni importi. Ove importe cemo<br />

popravljati tako sto cemo selektovati svaki od njih i desnim klikom cemo<br />

izabrati Disassemble/Hex View posle cega cemo videti sledece podatke:<br />

00145F7F push 77E694F2 // = kernel32.dll/0147/GetEnvironmentStrings<br />

00145F84 jmp 00145F58<br />

Ovo nam govori je prvi netacan import na adresi 00145F7F ustvari poziv ka<br />

GetEnvironmentStrings APIu koji se nalazi u kernel32.dll fajlu. Posto ovo<br />

znamo ostaje nam da zatvorimo ovaj Disassemble prozor i da duplim klikom<br />

na prvi netacan import otvorimo novi prozor koji nosi naziv Import Editor. U<br />

njemu cemo korigovati nas netacan import selekcijom .dll fajla u kojem se on<br />

nalazi i konacnom selekcijom tacnog APIja popravimo invalidan import. Ovaj<br />

postupak treba ponoviti za sve netacne pozive, posle cega nam ostaje da<br />

konacno popravimo dumpovan fajl pomocu ImpRecove opcije FixDump.<br />

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

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

Saved successfully!

Ooh no, something went wrong!