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.

Prvo cemo backupovati stare podatke koji se nalaze na samom pocetku ovog<br />

CALLa. Trebaju nam sledeci redovi:<br />

00407E5C 55 PUSH EBP<br />

00407E5D 8BEC MOV EBP,ESP<br />

00407E5F 53 PUSH EBX<br />

00407E60 56 PUSH ESI<br />

00407E61 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8]<br />

00407E64 33F6 XOR ESI,ESI<br />

Sada treba da ubacimo novi ASM kod koji ce patchovati NAG. Za ovo cemo<br />

iskoristiti sekciju .ap0x i prazan prostor na njenom kraju.<br />

Prvo radimo preusmeravanje WM_MESSAGE loopa na .ap0x sekciju. Ovo<br />

cemo uraditi tako sto cemo izmeniti PUSH EBP komandu u sledeci ASM kod:<br />

00407E5C - E9 02880000 JMP NAG-Cryp.00410663<br />

posle cega cemo otici na adresu 00410663 gde cemo uneti sledece:<br />

00410663 A3 8A064100 MOV DWORD PTR DS:[41068A],EAX /* Backup EAXa<br />

00410668 . B8 107F4000 MOV EAX,NAG-Cryp.00407F10 EAX = prvom bajtu NAGa<br />

0041066D > 3D 227F4000 CMP EAX,NAG-Cryp.00407F22 Da li patchovan ceo NAG<br />

00410672 . 74 06 JE SHORT NAG-Cryp.0041067A Ako jeste skoci na kraj<br />

00410674 . C600 90 MOV BYTE PTR DS:[EAX],90 Patchuj NAG<br />

00410677 . 40 INC EAX Povecaj EAX za jedan<br />

00410678 .^ EB F3 JMP SHORT NAG-Cryp.0041066D Skoci na pocetak patcha<br />

0041067A > A1 8A064100 MOV EAX,DWORD PTR DS:[41068A] Vrati vrednost EAXu */<br />

0041067F . 55 PUSH EBP /* Backupovan CALL<br />

00410680 . 8BEC MOV EBP,ESP<br />

00410682 . 53 PUSH EBX<br />

00410683 . 56 PUSH ESI<br />

00410684 .- E9 D877FFFF JMP NAG-Cryp.00407E61 */ Vrati se u CALL<br />

Ovaj kod je detaljno komentarisan sa strane ali cu vam objasniti o cemu se<br />

radi:<br />

1) Posto EAX sadrzi broj vitalan za sam CALL prvo cemo ga backupovati<br />

negde<br />

2) U EAX stavljamo prvu adresu koju patchujemo<br />

3) Preko MOV BYTE PTR komande memorijski patchujemo NAG<br />

4) Kada su svi NAG bajtovi patchovani vracemo EAXu vrednost<br />

5) Unosimo bajtove koji su zamenlji u samom CALLu kada smo uneli JMP<br />

Ostaje jos samo da kazem da se ovaj patch aktivira prilikom svakog prolaza<br />

kroz WM_MESSAGE loop stoga nema protrebe za dodatnim proveravanjem<br />

koda. Ako posle patchovanja startujemo metu videcemo da smo uspeli i da<br />

NAGa vise nema.<br />

Resenje: - Korak 3<br />

I kao finalni korak ovog dugackog reverserskog problema ostalo nam je<br />

samo da napravimo jedan keygenerator. Da bismo ovo uradili kada dodjemo<br />

do OEPa sa izvrsavanjem programa potrazicemo stringove skrolovanjem na<br />

gore i pronaci cemo ovo:<br />

00407DD4 68 307E4000 PUSH NAG-Cryp.00407E30 ; ASCII "Cracked ok"<br />

A ako odemo malo gore videcemo i kod koji se koristi za generisanje<br />

serijskog broja:<br />

00407D79 85C0 TEST EAX,EAX<br />

00407D7B 7C 1E JL SHORT NAG-Cryp.00407D9B /* Deo 1<br />

00407D7D 40 INC EAX<br />

00407D7E 33D2 XOR EDX,EDX<br />

00407D80 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]<br />

00407D83 8A4C11 FF MOV CL,BYTE PTR DS:[ECX+EDX-1]<br />

00407D87 80F1 2C XOR CL,2C<br />

00407D8A 81E1 FF000000 AND ECX,0FF<br />

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

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

Saved successfully!

Ooh no, something went wrong!