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.

0040151C |. 50 PUSH EAX ; Pretvaranje SecData1 u Hex [EAX]<br />

0040151D |. E8 FA020000 CALL Crackme3.0040181C<br />

00401522 |. 33C9 XOR ECX,ECX<br />

00401524 |> F6C1 01 /TEST CL,1<br />

00401527 |. 74 04 |JE SHORT Crackme3.0040152D<br />

00401529 |. 34 74 |XOR AL,74<br />

0040152B |. EB 02<br />

|JMP SHORT Crackme3.0040152F<br />

0040152D |> 34 79<br />

|XOR AL,79<br />

0040152F |> FEC1<br />

|INC CL<br />

00401531 |. 80F9 04 |CMP CL,4<br />

00401534 |. 74 04 |JE SHORT Crackme3.0040153A<br />

00401536 |. D1C0 |ROL EAX,1<br />

00401538 |.^ EB EA \JMP SHORT Crackme3.00401524<br />

0040153A |> 8985 5CFFFFFF MOV DWORD PTR SS:[EBP-A4],EAX<br />

00401540 |. 8B1D 4D324000 MOV EBX,DWORD PTR DS:[40324D]<br />

00401546 |. 339D 5CFFFFFF XOR EBX,DWORD PTR SS:[EBP-A4]<br />

0040154C |. 68 C4314000 PUSH Crackme3.004031C4 ; ASCII "88A7B7A8"<br />

00401551 |. E8 C6020000 CALL Crackme3.0040181C<br />

00401556 |. 3BC3 CMP EAX,EBX<br />

00401558 |. 0F85 EB000000 JNZ Crackme3.00401649<br />

Loop koji sam izdvojio sluzi za proracunavanje vrednosti na osnovu unetog<br />

podatka u .ini fajl. Na osnovu ovoga se racuna broj koji se dodatno menja<br />

XORovanjem sa konstantom koja se nalazi na adresi 004324D. Dakle ova<br />

jednacina izgleda ovako SecData1 ^ algoritam XOR const = Computer IDu.<br />

Sada jos samo treba da reversujemo ovaj algoritam. Ako tracujemo kroz<br />

njega primeticemo da ce se on bez obzira na SecData1 sadrzaj uvek ponasati<br />

isto, dakle imacemo:<br />

XOR AL,79<br />

ROL EAX,1<br />

XOR AL,74<br />

ROL EAX,1<br />

XOR AL,79<br />

ROL EAX,1<br />

XOR AL,74<br />

ROL EAX,1<br />

XOR EAX, 78307061<br />

Dakle da bismo izracunali vrednost SecData1 moramo da reversujemo ovaj<br />

algoritam krecuci od kraja, od Computer IDa. Dakle kada izracunamo<br />

88A7B7A8 xor 78307061 (const) krecemo sa reversingom algoritma, odnosno<br />

propustamo vrednost F097C7C9 kroz reversovan algoritam:<br />

ROR EAX,1<br />

XOR AL,74<br />

ROR EAX,1<br />

XOR AL,79<br />

ROR EAX,1<br />

XOR AL,74<br />

ROR EAX,1<br />

XOR AL,79<br />

i kao rezultat toga dobijamo vrednost koju bi SecData1 trebalo da ima. Da<br />

ovo ne bismo racunali rucno napisao sam program koji radi bas ovo. Dakle<br />

samo treba da unesemo F097C7C9 u ReCrackme3.exe i da dobijeni rezultat<br />

unesemo u .ini fajl. Kada ovo uradimo i unesemo vrednost DE12F88F u nas<br />

.ini fajl videcemo da je rezultat algoritma SecData1 ^ algoritam XOR const<br />

jednak 88A7B681 a ne 88A7B7A8. Odakle ova greska Iz razloga sto kod<br />

ROL/ROR komande moze da dodje do gubitka podataka mora se uraditi<br />

ponovno racunanje pocetne SecData1 vrednosti na osnovu prethodnog<br />

rezultata. Dakle XORovacemo 88A7B681 sa 78307061 i dobijenu vrednost<br />

cemo uneti u moj program. Rezultat ovoga ce ovaj put biti FE12F8AA. I sada<br />

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

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

Saved successfully!

Ooh no, something went wrong!