jednoduchý CD check od Coshe - opcode patch
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