The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
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