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.
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