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.

opet modifikovati nas uneti serijski broj u AAAAAAAAAAAA. Kao sto vidimo<br />

nakon ponovnog pokretanja mete, ona ce sada stici sa izvrsavanjem do:<br />

0046A176 |> /8D55 F4 /LEA EDX,DWORD PTR SS:[EBP-C]<br />

0046A179 |. |8B86 FC020000 |MOV EAX,DWORD PTR DS:[ESI+2FC]<br />

0046A17F |. |E8 1CB8FCFF |CALL Secret.004359A0<br />

0046A184 |. |8B45 F4<br />

|MOV EAX,DWORD PTR SS:[EBP-C]<br />

0046A187 |. |0FB64418 FF |MOVZX EAX,BYTE PTR DS:[EAX+EBX-1]<br />

0046A18C |. |03F8<br />

|ADD EDI,EAX<br />

0046A18E |. |43<br />

|INC EBX<br />

0046A18F |. |83FB 0D<br />

|CMP EBX,0D<br />

0046A192 |.^\75 E2<br />

\JNZ SHORT Secret.0046A176<br />

Posto je ovo poslednji loop pre poredjenja registra EDI sa vrednoscu 0x384,<br />

zakljucujemo da se ovde racuna serijski broj. A kao sto se iz loopa vidi<br />

jednostavno se na EDI registar dodaju vrednosti svih slova iz unetog<br />

serijskog broja. Ovo znaci zbir ASCII vrednosti slova unetog serijskog broja<br />

mora biti jednak 900 decimalno. I sada smo konacno dosli do dela u kojem<br />

cemo izracunati serijski broj rucno i to po formuli:<br />

900 / 12 = 75 iz cega sledi da je validan serijski KKKKKKKKKKKK.<br />

Zasto Zato sto se sabira 12 slova, a ako su sva ista deljenjem cemo dobiti<br />

vrednost tog slova. Posto je dobijena vrednost 75, onda je trazeno slovo<br />

ASCII vrednost broja 75 to jest slovo K. Slobodno probajte serijski broj u<br />

nasoj meti i videcete da smo bili u pravu.<br />

Resenje: - Deo II<br />

Ostaje nam samo da na osnovu onoga sto znamo napisemo program koji ce<br />

generisati validan serijski broj. Ovaj algoritam mozemo jako lako napisati.<br />

Zamislite da su sva slova K. Ako svaka dva slova sada pomerimo za po jedan<br />

karakter: LJKKKKKKKKKK idalje cemo dobijati tacan serijski broj. Na osnovu<br />

ove cinjenice cemo napisati sledeci C++ algoritam:<br />

char serial[12]="";<br />

char buffer[12]="";<br />

char bufferd[12]="";<br />

int i,inc;<br />

for(i=0; i

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

Saved successfully!

Ooh no, something went wrong!