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.

Delphi and ASM<br />

Kao veoma obican i lak primer sam za ovaj sesti cas pripremio<br />

Bangalyev CrackMe #2. On kao i ostali primeri koje ja nisam napisao mogu<br />

se preuzeti sa adrese www.crackmes.de Ako “propustimo” ovaj primer kroz<br />

PeID videcemo da je on pisan u TASMu / MASMu. Ok otvoricemo Olly da<br />

vidimo sta se desava unutar ovog programa. Pretpostavicu da znate da<br />

pronadjete mesto gde se generise serijski broj pa cemo odmah preci na<br />

stvar. Znaci imamo ovaj deo koda koji nam je interesantan i ne zelimo da<br />

ponovo pisemo ovu rutinu:<br />

00401304 |. B8 01000000 MOV EAX,1<br />

00401309 |> 8B15 38304000 /MOV EDX,DWORD PTR DS:[403038]<br />

0040130F |. 8A90 37304000 |MOV DL,BYTE PTR DS:[EAX+403037]<br />

00401315 |. 81E2 FF000000 |AND EDX,0FF<br />

0040131B |. 8BDA<br />

|MOV EBX,EDX<br />

0040131D |. 0FAFDA<br />

|IMUL EBX,EDX<br />

00401320 |. 03F3 |ADD ESI,EBX<br />

00401322 |. 8BDA |MOV EBX,EDX<br />

00401324 |. D1FB |SAR EBX,1<br />

00401326 |. 03F3 |ADD ESI,EBX<br />

00401328 |. 2BF2 |SUB ESI,EDX<br />

0040132A |. 40<br />

|INC EAX<br />

0040132B |. 49<br />

|DEC ECX<br />

0040132C |.^ 75 DB<br />

\JNZ SHORT Key-Crac.00401309<br />

0040132E |. 56<br />

PUSH ESI<br />

Mozemo da postavimo break-point na adresu 00401309 i da prodjemo par<br />

puta kroz ovaj loop da vidimo sta se to desava ovde. Videcemo da se u prva<br />

tri reda u EDX stavlja prvo,drugo,... slovo iz imena, u ostalim se vrse neke<br />

racunske operacije i ovaj loop se ponavlja vise puta, odnosno onoliko puta<br />

koliko ime ima slova. Ono sto vidimo je da se svi registri sem ESI resetuju to<br />

jest da dobijaju neke nove vrednosti. Ovo ujedno znaci da ce na kraju loopa<br />

ESI sadrzati pravi serijski broj. Ako ovo odavde ne mozete da zapazite imate<br />

i deo koda malo ispod koji vam upravo ovo govori:<br />

0040133A |. 3BC6<br />

0040133C |. 75 15<br />

CMP EAX,ESI<br />

JNZ SHORT Key-Crac.00401353<br />

Ono sto cemo mi uraditi je da cemo iskoristiti ovaj ASM kod da napravimo<br />

Delphi keygenerator, ali to necemo raditi prevodjenjem ovog ASM koda u<br />

Delphi nego malom modifikacijom ovog ASM koda i njegovim ubacivanjem u<br />

Delphi program. Sve od adrese 0040131B pa do adrese 00401328 cemo<br />

ostaviti kako jeste, dok cemo ostatak prilagoditi. Znaci ovo cemo malo<br />

prilagoditi:<br />

MOV EBX,EDX<br />

IMUL EBX,EDX<br />

ADD ESI,EBX<br />

MOV EBX,EDX<br />

SAR EBX,1<br />

ADD ESI,EBX<br />

SUB ESI,EDX<br />

Ono sto moramo da uradimo je da pre izvrsavanja ovoga u EDX stavimo<br />

vrednost ASCII koda nekog slova iz imena, a na kraju da ESI sacuvamo u<br />

neku promenljivu.Znaci kod cemo izmeniti u ovo:<br />

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

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

Saved successfully!

Ooh no, something went wrong!