SN, keygen, ochráněno pe šifrérem, antidasm makry, ...
UPOZORNĚNÍ: TENTO DOKUMENT SLOUŽÍ POUZE KE STUDIJNÍM ÚČELŮM. AUTOR NENESE ŽÁDNOU ZODPOVĚDNOST ZA JEHO ZNEUŽITÍ

Soubor CrackMe3.zip

CrackMe jako vždy nejprve spustíme a vyzkoušíme. Rozhodně bychom si měli všimnout, že chyba je zobrazena pomocí MessageBoxu po kliknutí na tlačítko "Registrovat". Protože víme, že se jedná o CrackMe napsané v Delpi, zkusíme požít rovnou DeDe jako obvykle. Po načtení a Processingu zjistíme nemilou věc - DeDe nerozeznal žádné třídy, žádné formáláře a tedy ani žádné prvky a kód. To může být způsobeno jen tím, že program není napsán v Delphi, nebo jsou data šifrovaná. Budeme předpokládat, že je použit nějaký PE šifrér nebo kompresor, což budeme muset potvrdit. Protože o PE šifrérech a kompresorech víme dost, tak zjistíme jeho přítomnost manuálně v programu StudPE. V programu StudPE otevřeme crackme a podíváme se do záložky Sections, kde vidíme, že entry point není v první sekci, ale až v poslední se jménem ".lodus" - domněnka o PE šifréru / kompresoru byla potvrzena. Nyní musíme exe nějakým způsobem dešifrovat. Pokud byste chtěli napsat vlastní dešifrér, stačí pochopit dešifrační rutinu PE šifréru za použití debuggeru a případně i disassembleru. Pokud se tuto rutinu rozhodnete prozkoumat, zjistíte, že exe bylo zašifrováno PE šifrérem uvedeným v této práci.
Cracker však vždy místo vlastní dešifrační rutiny nejprve vyzkouší již napsané programy. Pokud si vzpomenete na kapitolu o PE šifrérech, pak si jistě vzpomenete na zmíněnou účinnou zbraň proti PE šifrérům - dumpery, ty jsou však zase používány až po tom, co selžou univerzální dešifréry, které program dešifrují a upraví zpět do původního stavu (před zašifrováním). Jeden univerzální dešifrér najdete i na přiloženém CD. Jedná se o program QUnpack.
Spustíme QUnpack, tlačítkem Open file otevřeme naše crackme. Jako vstupní informaci je nutné uvést adresu originálního entry pointu, ale QUnpack disponuje i algoritmem, který se OEP pokusí najít (rozeznat). U textového pole OEP je tlačítko [>], klikneme na něj a hned by se v něm měla objevit adresa rozeznaného entry pointu. Nyní můžeme kliknout na tlačítko Unpack now! Pokud se na konci stavového okna objevil řádek "Target has been successfully unpacked", pak crackme bylo v pořádku dešifrováno a přestavěno. Dešifrované crackme je pojmenováno jako CrackMe3__.exe. Díky QUnpacku můžeme crackme načíst do DeDe a tam začít bez problémů analyzovat.
V DeDe najdeme si proceduru kliknutí na tlačítko a podíváme se na kód:

0044F17A push dword ptr fs:[eax];nastavení SEHu
0044F17D mov fs:[eax], esp;nastavení SEHu
0044F180 jmp 0044F186;skok na konec callu (?!)
Praktická zkouška z odborných předmětů – Ochrana programů proti kopírování
68
0044F182 call 6444F187
0044F187 mov eax, [$00000018]
...
0044F1A3 loop -$18
0044F1A5 add [eax], al
0044F1A7 add bl, ch
0044F1A9 fdiv qword ptr [eax+eax+$00]
...