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.

<strong>The</strong> Serials – Computer ID<br />

Do sada smo obradili programe koji generisu serijske brojeve na<br />

osnovu unetog imena. Ono sto preostaje u ovom opusu je generisanje<br />

serijskih brojeva na osnovu nekog hardwareskog parametra, to jest na<br />

osnovu computer IDa. Ono sto vecini korisnika nije jasno je da svaki<br />

program za sebe generise poseban computer ID, koji se razlikuje od<br />

programa do programa. Iako se serijski broj zasniva na nekom computer IDu<br />

sam princip generisanja je isti posto se serijski broj opet generise na osnovu<br />

neke konstante. Za potrebe ovog dela knjige sa interneta sam skinuo sledeci<br />

crackme …\Casovi\Cas3\abexcm5.exe Posto je Abexov program pisan u TASMu<br />

jedini alat koji ce nam trebati je OllyDBG. Otvorite Olly i ucitajte ovaj fajl u<br />

njega. Kao sto primecujemo ovo je jako kratak program, pocinje na adresi<br />

00401000 a zavrsava se na adresi 00401171. Takodje su ocigledne dve<br />

poruke koje se nalaze u programu, "<strong>The</strong> serial you entered is not correct!" i "Yep,<br />

you entered a correct serial!". Primeticemo komandu RET 10 na adresi<br />

00401069 koja oznacava da stvaran deo za proveru serijskog broja ne<br />

pocinje na adresi 00401056 nego na adresi 0040106C, stoga cemo postaviti<br />

break-point na tu adresu.<br />

00401069 |. C2 1000 RET 10<br />

0040106C |> 6A 25 PUSH 25<br />

0040106E |. 68 24234000 PUSH abexcm5.00402324<br />

00401073 |. 6A 68 PUSH 68<br />

00401075 |. FF75 08 PUSH DWORD PTR SS:[EBP+8]<br />

00401078 |. E8 F4000000 CALL <br />

Sa F9 cemo startovati program i bez ikakvog unosenja serijskog broja cemo<br />

pritisnuti Check. Normalno, program je zastao na break-pointu. Evo sta se<br />

desava... Prvo program ucitava nas uneti serijski broj u memoriju na adresi<br />

00401078. Dalje se prosledjuju parametri funkciji koja vraca ime particije na<br />

kojoj se nalazi, to jest takozvani volume label na adresi 00401099.<br />

0040107D |. 6A 00 PUSH 0<br />

0040107F |. 6A 00 PUSH 0<br />

00401081 |. 68 C8204000 PUSH abexcm5.004020C8<br />

00401086 |. 68 90214000 PUSH abexcm5.00402190<br />

0040108B |. 68 94214000 PUSH abexcm5.00402194<br />

00401090 |. 6A 32 PUSH 32<br />

00401092 |. 68 5C224000 PUSH abexcm5.0040225C<br />

00401097 |. 6A 00 PUSH 0<br />

00401099 |. E8 B5000000 CALL <br />

Na adresi 004010A8 se poziva funkcija lstrcatA koja spaja dva stringa. Prvi<br />

string je volume label a drugi je uvek isti i jednak je 4562-ABEX.<br />

0040109E |. 68 F3234000 PUSH abexcm5.004023F3 ; /StringToAdd = "4562-ABEX"<br />

004010A3 |. 68 5C224000 PUSH abexcm5.0040225C ; |ConcatString = ""<br />

004010A8 |. E8 94000000 CALL ; \lstrcatA<br />

Dalje na adresi 004010AF pocinje loop koji se izvrsava dva puta i sluzi za<br />

menjanje prva cetiri slova ili broja iz volume labela.<br />

004010AD |. B2 02<br />

MOV DL,2<br />

004010AF |> 8305 5C224000>/ADD DWORD PTR DS:[40225C],1<br />

004010B6 |. 8305 5D224000> |ADD DWORD PTR DS:[40225D],1<br />

004010BD |. 8305 5E224000> |ADD DWORD PTR DS:[40225E],1<br />

004010C4 |. 8305 5F224000> |ADD DWORD PTR DS:[40225F],1<br />

004010CB |. FECA<br />

|DEC DL<br />

004010CD |.^ 75 E0<br />

\JNZ SHORT abexcm5.004010AF<br />

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

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

Saved successfully!

Ooh no, something went wrong!