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.

004010E9 |. 3C 00<br />

004010EB |. /74 59<br />

CMP AL,0<br />

JE SHORT timetria.00401146<br />

A ovde se sigurno proverava da li je broj preostalih startovanja programa<br />

nula ili ne. Stoga cemo ovu proveru promeniti u ovo:<br />

004010DC |. 2805 00304000<br />

004010E2 |> B0 90<br />

004010E4 |. 90<br />

004010E5 |. 90<br />

004010E6 |. 90<br />

004010E7 |. 34 69<br />

004010E9 |. 3C 00<br />

004010EB |. 74 59<br />

SUB BYTE PTR DS:[403000],AL<br />

MOV AL,90<br />

NOP<br />

NOP<br />

NOP<br />

XOR AL,69<br />

CMP AL,0<br />

JE SHORT timetria.00401146<br />

Posto se AL xoruje sa 69, jedina vrednost koja ce posle xorovanja dati nulu<br />

je ako se u AL nalazi bas 69. Dakle 69 xor 69 jednako 0. Ovo cemo resiti<br />

jednostavno tako sto cemo umesto MOV AL, BYTE PTR DS:[4030B5] ubaciti<br />

MOV AL,90. Broj 90 je proizvoljan i mozete uzeti bilo koji broj koji je veci od<br />

69. Naravno da smo mogli i ovde da obrisemo XOR ali nema potrebe, ovako<br />

je lakse. Ako pogledamo dole sta ce se izvrsiti ako se svi ovi skokovi ne<br />

izvrse, a nece posto smo ih modifikovali tako da nikada nece:<br />

004010ED |. FEC8<br />

DEC AL<br />

004010EF |. A2 01304000<br />

MOV BYTE PTR DS:[403001],AL<br />

004010F4 |. 34 69<br />

XOR AL,69<br />

004010F6 |. A2 B5304000<br />

MOV BYTE PTR DS:[4030B5],AL<br />

004010FB |. 6A 00 PUSH 0 ; /Origin = FILE_BEGIN<br />

004010FD |. 6A 00 PUSH 0 ; |pOffsetHi = NULL<br />

004010FF |. 6A 00 PUSH 0 ; |OffsetLo = 0<br />

00401101 |. FF35 14314000 PUSH DWORD PTR DS:[403114]; |hFile = NULL<br />

00401107 |. E8 18010000 CALL ; \SetFilePointer<br />

0040110C |. 6A 00 PUSH 0 ; /pOverlapped = NULL<br />

0040110E |. 68 E0304000<br />

PUSH timetria.004030E0<br />

00401113 |. 6A 0B PUSH 0B ; |nBytesToWrite = B<br />

00401115 |. 68 AB304000 PUSH timetria.004030AB ; |Buffer = 004030AB<br />

0040111A |. FF35 14314000<br />

PUSH DWORD PTR DS:[403114]; |hFile = NULL<br />

00401120 |. E8 05010000 CALL ; \WriteFile<br />

Videcemo da se u fajl DATA.DET snimaju novi podaci o vremenu i broju<br />

pokusaja, odnosno samo o broju startovanja programa jer se poslednje<br />

vreme startovanja programa cita iz DATA.DET file-timea. Kada snimimo sve<br />

ove promene mozemo da startujemo crackme i videcemo sledece:<br />

Mozemo restartovati ovaj crackme koliko puta zelimo, mozemo menjati<br />

datum a rezultat ce uvek biti isti: “Crackme zarobljen u vremenu :)”.<br />

Uspesno smo modifikovali program, a ako ste negde pogresili mozete<br />

iskoristiti backup fajl DATA.DET.bak da biste vezbali na ovom primeru.<br />

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

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

Saved successfully!

Ooh no, something went wrong!