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