Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #89, МАЙ 2006 г.

Готовим кейген

ARA

Хакер, номер #089, стр. 089-064-1


Поиск алгоритма генерации ключей регистрации

Вечный бой продолжается… Начало ему положила программа, за которую автор хотел получить деньги. Кто-то платить отказывался, кто-то не мог, вот и нашлись светлые головы, захотевшие разобрать внутренности наглой проги, и посмотреть, почему именно она не хочет работать так, как «нормальное» бесплатное ПО. Конечно, это все мои фантазии, и, возможно, все было совершенно не так, но одно совершенно точно: бой продолжается по сей день и, по-видимому, не закончится никогда.

Что ж, могу только и тебе, читатель, пожелать приобщиться к нашей огромной армии и заслужить свою медаль на полях сражений интеллектов. А продолжим совершенствование своих навыков и пополнение багажа знаний написанием кейгена (генератора ключей). Никому не секрет, что изготовление кейгена является одним из самых сложных и почетных работ крэкера. Ну-с, начнем..

Как готовить подопотного кролика?

В качестве объекта исследования я выбрал довольно известную программу DU Meter v.3.07 build 200. Утилита, безусловно, нужная. Кто озабочен подсчетом интернет-трафика, тот меня поймет. Я сам ей пользуюсь, так что рекомендую. Причем ключ у тебя будет сделан своими руками, что сделает ее ценнее.

Для начала посмотрим на регистрацию. Представляет она из себя ввод лицензионных данных: имя пользователя и серийный номер. Я для интереса попробовал что-нибудь ввести. Окошко о неправильном серийном номере меня несказанно порадовало, да еще и программа продолжала работать, так что можно было вводить новый серийник. Почему порадовало? Да просто вместо сообщения о неверном номере можно было увидеть закрывшуюся прогу, просьбу о перезапуске или, вообще, ничего не увидеть и только догадываться, угадал ли ты пароль с первого раза или нет. Конечно, это бы особых проблем не прибавило, но, как говорится, мелочь, а приятно. Затем определим, на каком из языков программирования написана программа - это очень важный момент, ведь подходы ко взлому ПО, написанного, например на VisualBasic, да еще и скомпилированные в p-code, существенно отличаются от подходов, применяемых к программе, разработанной в Delphi или С++. Заодно проверим наличие или отсутствие упаковщика/протектора. Поможет нам в этом утилита PeiD или любой дизассемблер для тех, кто уже может различать на глаз языки программирования и протекторы, так как не стоит особенно полагаться на честность анализаторов, а нужно уметь определять это самому. Ладно, придет с опытом. А пока обратимcя к PEiD и посмотрим на его ответ - Borland Delphi 6.0 - 7.0. Что ж, на этот раз он прав – это именно Delphi. Посмотрим еще на наличие в коде криптоалгоримов, поможет в этом опять PEiD, а точнее его плагин KANAL. Видим два алгоритма CRC32, причем таблица констант генерируется во время выполнения программы. Запомним, в дальнейшем это нам пригодится.

Теперь определимся с инструментами. Нам нужны дизассемблер, отладчик, блокнот, ну и конечно, знания и наличие одного из языков программирования (для написания кейгена). В качестве дизассемблера и отладчика я буду использовать OllyDbg 1.10. Из дизассемблеров можно посоветовать еще IDA Pro – безусловно, лучший в своем роде. А так как «наша» программа написана на Delphi, то в качестве вспомогательного инструмента воспользуемся DeDe – декомпилятор Delphi-приложений. Последние версии всех используемых утилит можно скачать с сайта cracklab.ru из соответствующего раздела. Поручим пока DeDe декомпилировать нашу прожку, а сами можем отдохнуть.

Содержание  Вперед на стр. 089-064-2