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