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.

004104D0 . 81EA 004DFC8A SUB EDX,8AFC4D00<br />

004104D6 . 83EA 1A<br />

SUB EDX,1A<br />

004104D9 . 83E2 1C<br />

AND EDX,1C<br />

004104DC . 83FA 10<br />

CMP EDX,10<br />

004104DF .^ 75 B8 JNZ SHORT NAG-Cryp.00410499 */ ExitProcess<br />

004104E1 . B8 D47D4000 MOV EAX,NAG-Cryp.00407DD4 /* Dekripcija dva<br />

004104E6 . B9 2C000000 MOV ECX,2C<br />

004104EB > 8030 10<br />

XOR BYTE PTR DS:[EAX],10<br />

004104EE . 83C0 01<br />

ADD EAX,1<br />

004104F1 .^ E2 F8 LOOPD SHORT NAG-Cryp.004104EB */<br />

004104F3 . B8 307E4000 MOV EAX,NAG-Cryp.00407E30 /* Dekripcija tri<br />

004104F8 . B9 17000000 MOV ECX,17<br />

004104FD > 8000 02<br />

ADD BYTE PTR DS:[EAX],2<br />

00410500 . 83C0 01 ADD EAX,1<br />

00410503 .^ E2 F8 LOOPD SHORT NAG-Cryp.004104FD */<br />

00410505 . B8 00044100 MOV EAX,NAG-Cryp.00410400 /* Dekripcija cetiri<br />

0041050A . B9 03010000 MOV ECX,103<br />

0041050F . BA 00000000 MOV EDX,0<br />

00410514 > 0310 ADD EDX,DWORD PTR DS:[EAX]<br />

00410516 . 83C0 01 ADD EAX,1<br />

00410519 .^ E2 F9 LOOPD SHORT NAG-Cryp.00410514 */<br />

0041051B . 81FA 3A80C17C CMP EDX,7CC1803A /* checksum<br />

00410521 .- 0F84 D77AFFFF JE NAG-Cryp.00407FFE */ JMP to OEP<br />

00410527 .^ E9 6DFFFFFF JMP NAG-Cryp.00410499 */ ExitProcess<br />

Kao sto vidite i gornji deo koda je analiziran sa strane. Ovde se nalazi veci<br />

deo provera i dekripcija gornjeg dela koda iz sekcije CRYPTO. Ono sto je<br />

bitno da uradite da biste konacno stigli do OEPa je da postavite break-point<br />

na adresu 00410521 i pritiskom na F9 dodjete do nje. Kao sto vidimo ovde<br />

se nalazi jos jedna checksum provera, ispod koje se nalazi jedan JE skok koji<br />

uvek mora da se izvrsi ako zelimo da dodjemo na OEP. Iz ovog razloga cemo<br />

izmeniti ovaj JE skok u JNE. Ovo cemo posle izvrsavanja skoka vratiti na JE<br />

jer ni ovaj deo koda ne sme biti patchovan zbog raznih checksum provera<br />

koje proveravaju ovaj deo koda. I evo kako izgleda sam OEP:<br />

00407FFE 6A 00 PUSH 0<br />

00408000 68 5C7E4000 PUSH NAG-Cryp.00407E5C<br />

00408005 6A 00 PUSH 0<br />

00408007 6A 64 PUSH 64<br />

00408009 FF35 4CA84000 PUSH DWORD PTR DS:[40A84C] ; NAG-Cryp.00400000<br />

0040800F E8 9CC5FFFF CALL <br />

00408014 E8 ABB4FFFF CALL NAG-Cryp.004034C4<br />

Posto je dekriptor zavrsio svoj posao ostaje nam samo da pronadjemo gde se<br />

to nalazi NAG gore u kodu.<br />

00407F10 6A 40 PUSH 40<br />

00407F12 68 407F4000 PUSH 00407F40 "NAG:"<br />

00407F17 68 487F4000 PUSH 00407F48 "Ovo je NAG screen koji treba da ubijete !!!"<br />

00407F1C 53 PUSH EBX<br />

00407F1D E8 C6C6FFFF CALL <br />

I pronasli smo ga ovde. Sada treba nekako da patchujemo ovaj kod pre nego<br />

sto se NAG prikaze na ekran. Posto ovo ne smemo da radimo pomocu<br />

otpakivanja mete, a posto je lokacija na kojoj se nalazi NAG visestruko<br />

zasticena enkripcijom i checksum proverama moracemo da patchovanje<br />

izvrsimo ovako.<br />

Presrescemo DialogBoxParamA funkciju jer se ona izvrsava odmah na OEPu.<br />

Ovo se radi veoma lako ako samo analizirate parametre koje API<br />

DialogBoxParamA uzima. Kao sto se vidi iz podataka gore WM_MESSAGE<br />

loop se nalazi na adresi 00407E5C. Ok, otici cemo na tu adresu i pocecemo<br />

sa patchovanjem.<br />

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

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

Saved successfully!

Ooh no, something went wrong!