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 sto treba da uradimo je da da sve simbole iz crc32table.txt<br />
pretvorimo u ASCII kodove. U ovom slucaju je ovo jako tesko izvesti, jer su<br />
slova prilicno ne standardna, pa cemo napraviti program koji ce to uraditi za<br />
nas. Kod Visual Basic programa koji to radi bi izgledao bas ovako:<br />
Text2.Text = ""<br />
for i = 1 to Len(Text1.Text)<br />
Text2.Text = Text2.Text & Asc(Mid$(Text1.Text,i,1))<br />
if i < Len(Text1.Text) then Text2.Text = Text2.Text + “,”<br />
next i<br />
Text2 sadrzi rezultat a Text1 sadrzi string za koji se racuna ASCII. Gotov<br />
primer se nalazi u istom folderu pod imenom ascii.exe. Otvorimo ovaj<br />
program i u njega unesimo string iz fajla crc32table.txt. Ono sto ce program<br />
pokazati je:<br />
27,111,111,20,25,25,30,25<br />
Sada treba da patchujemo program crc32.exe i snimimo patchovan program<br />
kao new.exe. Patchovacemo 00450E88 adresu u ovo:<br />
00450E88 C3 RET<br />
00450E89 90 NOP<br />
Reimenujte originalni crc32.exe u crc32_1.exe, a new.exe u crc32.exe. Sada<br />
cemo pomocu getCRC32.exe dobiti CRC vrednost fajla crc32.exe (new.exe<br />
fajla) fajla, dobicemo novi CRC koji iznosi 0D2541F9 (zapamtite CRC mora imati<br />
8 cifara). Sada cemo i ovaj CRC pretvoriti u ASCII pomocu ascii.exe-a.<br />
Dobicemo ovo:<br />
48,68,50,53,52,49,70,57<br />
Pored ovog nam je poteban i ASCII kod originalnog crc32.exe fajla, koji se<br />
trenutno zove crc32_1.exe. Posto znamo da ovaj CRC iznosi 7CC85525, i<br />
njega cemo pretvoriti u ASCII. To izgleda ovako:<br />
55,67,67,56,53,53,50,53<br />
Sada treba da otkrijemo kako treba da enkriptujemo novu CRC vrednost -<br />
0D2541F9. Za ovo su nam potrebna dva podatka. ASCII enkriptovanog CRCa<br />
i ASCII samog CRCa. Ovi podaci su:<br />
27,111,111,20,25,25,30,25 i 55,67,67,56,53,53,50,53<br />
Ono sto je bitno da se svaka prosta a i komplikovana enkripcija zasniva na<br />
obicnom XOR-ovanju. Ovo znaci da je ASCII kod jednog karaktera<br />
enkriptovan (xorovan) nekom vrednoscu i tako je dobijena nova ASCII<br />
vrednost. Mi treba da saznamo kojom vrednoscu je XORovan svaki karakter<br />
originalnog CRCa - 7CC85525 kako bi bio dobijen enkriptovani string koji se<br />
nalazi u crc32table.txt fajlu. Ovo cemo dobiti reversnim xorovanjem, to jest<br />
uporedjivanjem enkriptovanog stringa i neenkriptovanog originalnog CRCa<br />
crc32.exe fajla. Znaci 27 xor = 55, 111 xor = 67,... Ono sto je bitno kod xor<br />
funkcije je da je ona reverzibilna to jest da je x xor y = z ali i da je z xor x = y i z<br />
xor y = x, i tako cemo otkriti vrednost . Znaci 55 xor 27 = 44, 67 xor 111 = 44,... i<br />
tako smo dobili magicnu xor vrednost za svako slovo CRCa. Sada treba samo<br />
da enkriptujemo novi CRC pomocu vrednosti 44, i da dobijenu ASCII<br />
vrednost pretvorenu u slova i simbole snimimo u crc32table.txt fajl. Ovo<br />
cemo uraditi pomocu novog programa koji cemo sami napisati. Evo kako to<br />
izgleda u Visual Basicu:<br />
<strong>The</strong> <strong>Art</strong> <strong>of</strong> <strong>Reversing</strong> <strong>by</strong> <strong>Ap0x</strong> Page 134 <strong>of</strong> 293