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