Автор: DiveSlip <diveslip@pochta.ru>
Решил накатать туториал по взлому crackme.
скачан с сайта www.crackmes.de,
а вот прямая ссылка:
www.crackmes.de/download.php/cffo-2.zip?Crackme=3
Crackme сложности - 0 (для самых маленьких), написан Acid Bytes, в мае 2000 года. Вроде так.
Если ссылка не пашет зайдите на сайт, выберите пункт A-D, и в тексте найдите крякмисы от Acid
Bytes.
1. Немного мышления. 2. W32Dasm. 3. PEiDentifier. 4. UPX.
Этот туториал предназначен для новичков, таких же как я, крякми очень легкий, и для взлома лично мне потребовалось около минуты. Если вы новичок, то сначала постарайтесь сами сломать этот крякми, защита очень легкая и для взлома даже не понадобился Soft-ICE.
Введем в крякми любой код (желательно неправельный), и смотрим, что получилось, а получилось: появилось окно (типичный MessageBox), в котором написано, что You are a bad cracker!, что в принципе на данный момент недалеко от правды, но только на данный момент! Запомним эту строчку (если на можете запомнить, то запишите на приготовленном куске бумажки), она нам пригодится.
Сначала посмотрим, что это за крякми и на чем написан. Я для этого использую PEiDentifier, у меня версия 0.8, так засовываем туда наш крякми, и что мы видим: крякми наш запакован Upx. Но это не страшно для великих крякеров (это мы). чтож, как советует, один хороший крэкер (Fess), для программ, запакованных Upx, хорошо подходит для распаковки сам Upx.
1. В директорию с Upx мы копируем наш крякми.
2. Затем вызываем сеанс MS-DOS, в котором переходим в каталог, где находится upx.exe. Я использую
такую строку: cd D:\HackTools\Распаковщики\Upx.
3. Пишем команду upx.exe -d crackme2.exe, ключ -d означает, что файл надо распаковать.
Если все получилось, то в каталоге Upx лежит и пылится распакованная версия crackme (если ее
опять засунуть в PEiDentifier, то мы увидим, что написан крякми на Delphi),которую мы теперь начнем
изучать в W32Dasm'е.
Загружаем наш распакованный крякми в дизассемлер. Если загрузили, то теперь надо вспомнить
что было написано в окошке crackme, когда мы ввели неправильный код:
Заголовок окна: Wrong Serial
Надпись в окне: You are a bad craker!
В W32Dasm'e нажимаем кнопку Strn Ref (она слева от кнопки с рисунком принтера):
в появившемся окошке ищем строчку You are a bad craker! Если нашли жмем на нее два раза мышкой.
И мы оказываемся в таком месте программы (они с моими комментариями):
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00442B8B(C) | :00442BA7 6A00 push 00000000 ; MessageBoxA будет виден * Possible StringData Ref from Code Obj ->"Wrong Serial" | :00442BA9 B9582C4400 mov ecx, 00442C58 ; Заголовок окна (параметр функции MessageBoxA) * Possible StringData Ref from Code Obj ->"You are a bad cracker!" | :00442BAE BA682C4400 mov edx, 00442C68 ; текст в окне (также параметр) :00442BB3 A1543C4400 mov eax, dword ptr [00443C54] :00442BB8 8B00 mov eax, dword ptr [eax] :00442BBA E845BEFFFF call 0043EA04 Нашли кусок, поехали дальше, смотрим выше и ищем место, где нас хвалят: * Possible StringData Ref from Code Obj ->"12011982" | :00442B53 BAE82B4400 mov edx, 00442BE8 ; подозрительное число записывается в edx * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00442AE7(C) | :00442B58 E8E70FFCFF call 00403B44 ; функция проверки :00442B5D 751A jne 00442B79 ; прыгаем если не равно :00442B5F 6A00 push 00000000 * Possible StringData Ref from Code Obj ->"Trial CrackMe Cracked!" | :00442B61 B9F42B4400 mov ecx, 00442BF4 * Possible StringData Ref from Code Obj ->"Congrats! You were successful!" | :00442B66 BA0C2C4400 mov edx, 00442C0C :00442B6B A1543C4400 mov eax, dword ptr [00443C54] :00442B70 8B00 mov eax, dword ptr [eax] :00442B72 E88DBEFFFF call 0043EA04 :00442B77 EB46 jmp 00442BBF
Нашли и этот кусок, и тут мы обращаем внимание на замысловатые циферки: 12011982.
Тут нас озаряет, что это и есть правильный номер.
Осталось всего лишь ввести его в нужное поле и принять поздравления.
P.S. Как видете здесь очень легкий взлом.
DiveSlip 19.06.2003
Материалы находятся на сайте http://cracklab.narod.ru/doc/