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.
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