Crackme 5 (C) - začátečník
UPOZORNĚNÍ: TENTO DOKUMENT SLOUŽÍ POUZE KE STUDIJNÍM ÚČELŮM. AUTOR NENESE ŽÁDNOU ZODPOVĚDNOST ZA JEHO ZNEUŽITÍ
Soubor crackme1.zip
Takže se zase pohneme trochu dál, nyní už se budeme pokoušet crackovat aplikace napsané
ve vyšším jazyce, všechny předchozí byly napsány v assembleru, takže pro nás byly do značné
míry velice přehledné. Nyní tomu už tak nebude, ale stále se bude jednat o velice dobře
pochopitelný kód, začínáme totiž s jazykem C++.
Spusťme tedy crackme, přivítá nás okno se dvěma tlačítky, kde na jednom je napsáno Check
CD. Bude se pravděpodobně jednat o nějakou kontrolu vloženého CD. Budeme potřebovat
vědět, pomocí jaké API funkce zjišťuje, jaké disky jsou k dispozici. K tomu již nám OllyDbg
nestačí, budeme potřebovat nový program, který dokáže vypsat všechny importované funkce.
Na přiloženém CD najdete disassembler W32DASM, v něm si náš crackme otevřete.
V menu vyberte Functions a Imports, dasm nám zobrazí všechny importované funkce
programu. Pokud jste prošli všechny zmíněné API v kapitole Různé druhy shareware – CD a
ostatní paměťové moduly, pak by Vás ihned měla zaujmout funkce jménem GetDriveTypeA,
která zjišťuje ze zadaného písmene disku jeho typ. Dvakrát na tuto funkci poklikáme, dasm se
přemístí na adresu, odkud je tato funkce poprvé volána.
| 00401349 CALL GetDriveTypeA | ;zavolání funkce GetDriveTypeA |
| 0040134F CMP EAX,3 | ;jde o fixed (pevný) disk? |
| 00401352 JE SHORT 00401392 | ;pokud ano, skok |