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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Time-Trial<br />

Postoji veliki broj programa pisan u svim programskim jezicima cije je<br />

koriscenje ograniceno na jedan, a najcesce veoma kratak, vremenski period.<br />

Jedna takva aplikacija se nalazi u folderu<br />

Cas08 a zove se timetrial.exe.<br />

Primeticete da se aplikacija moze koristiti<br />

samo tri dana ili se moze startovati samo<br />

nekoliko puta. Ovo cemo resiti tako da<br />

aplikacija nikada ne istekne. Upalite Olly i<br />

ucitajte ovu aplikaciju. Videcete niz API<br />

poziva: CreateFileA, MessageBoxA,<br />

ReadFileA, GetSystemTime.... Bez<br />

nekakve velike mudrosti vidi se da<br />

program otvara fajl DATA.DET, a ako on ne postoji prikazuje poruku o tome<br />

na ekran. Ako fajl postoji iz njega se cita 50 bajtova, posle cega se poziva<br />

API GetSystemTime koji vraca vreme na vasem kompjuteru. Proci cemo kroz<br />

sve ove API pozive sa F8 sve dok se ne nadjemo ovde:<br />

00401081 |. 803B 00 CMP BYTE PTR DS:[EBX],0<br />

Primeticemo da se JNZ skok nece izvrsiti pa cemo sigurno doci u sledeci loop:<br />

0040108B |> /66:8B81 E4304> /MOV AX,WORD PTR DS:[ECX+4030E4]<br />

00401092 |. |66:35 6969 |XOR AX,6969<br />

00401096 |. |66:8981 AB304> |MOV WORD PTR DS:[ECX+4030AB],AX<br />

0040109D |. |83C1 02<br />

|ADD ECX,2<br />

004010A0 |> |83F9 08<br />

|CMP ECX,8<br />

004010A3 |.^\76 E6<br />

\JBE SHORT timetria.0040108B<br />

Posto ja nemam zelju da prolazim kroz njega postavicu break-point na prvu<br />

adresu ispod loopa (004010A5) i pritisnucu F9. Ali objasnicu vam sta se ovde<br />

desava: Program jednostavno proverava kada je fajl snimljen, ako je to<br />

2001. prva godina onda ce samo skinuti jedno otvaranje programa i<br />

updateovace datum koji se nalazi na .DET fajlu. Naravno sve ovo ce biti<br />

snimljeno negde dole, ovde gore u loopu se samo proverava datum. Zbog<br />

ovoga ce se samo prvi put ici u ovaj loop, a svaki sledeci put ne. Posto nas<br />

ovaj prvi put i ne zanima onda cemo pritisnuti F9 da bismo startovali<br />

program i updateovali datum .DET fajla. Primeticemo da nam je program<br />

smanjio broj startovanja programa za jedan. Restartovacemo Olly i ici cemo<br />

sa F8 kroz kod sve dok ne dodjemo do:<br />

00401084 |. /75 22 JNZ SHORT timetria.004010A8<br />

primetite da se sada ovaj skok izvrsava i da cemo se naci ovde:<br />

004010A8 |> \8B0D AB304000<br />

004010AE |. 81F1 69696969<br />

004010B4 |. A1 E4304000<br />

004010B9 |. 3BC1<br />

004010BB |. 0F85 85000000<br />

004010C1 |. 66:8B0D B1304><br />

004010C8 |. 66:81F1 6969<br />

004010CD |. 66:A1 EA30400><br />

004010D3 |. 66:2BC1<br />

004010D6 |. 66:83F8 03<br />

004010DA |. 77 6A<br />

004010DC |. 2805 00304000<br />

004010E2 |> A0 B5304000<br />

004010E7 |. 34 69<br />

004010E9 |. 3C 00<br />

MOV ECX,DWORD PTR DS:[4030AB]<br />

XOR ECX,69696969<br />

MOV EAX,DWORD PTR DS:[4030E4]<br />

CMP EAX,ECX<br />

JNZ timetria.00401146<br />

MOV CX,WORD PTR DS:[4030B1]<br />

XOR CX,6969<br />

MOV AX,WORD PTR DS:[4030EA]<br />

SUB AX,CX<br />

CMP AX,3<br />

JA SHORT timetria.00401146<br />

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

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

XOR AL,69<br />

CMP AL,0<br />

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

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

Saved successfully!

Ooh no, something went wrong!