Кейген своими руками

GL#0M (gl00m-crk@yandex.ru)

Спецвыпуск: Хакер, номер #057, стр. 057-044-1

Исследование программы MooGear DV Capture v1.0

Ни для кого не секрет, что статей (на русском языке) на тему создания ключегенераторов к программам, защита которых основана на криптоалгоритмах, ничтожно мало... Собственно, этот факт и побудил меня написать эту статью. А в качестве жертвы был выбран MooGear DV Capture v1.0.

Сразу предупрежу, что я не собираюсь вдаваться в подробности каждого этапа работы криптоалгоритма, так как об этом написано немало отличных книг (например "Прикладная криптография" Брюса Шнайера). С их прочтения советую начинать. Плюс без опыта исследования программных защит и создания ключегенераторов (к простым защитам) тоже будет трудно осмыслить все нижесказанное. Для полноценной работы понадобятся PEiD, OllyDbg, IDA и MASM32. Теперь приступим к делу.

Цель нашего исследования, как показал PEiD, написана на Microsoft Visual C++ 6.0. Это хорошо, потому что компилятор данного языка генерирует более компактный и легче распознаваемый код, в отличие от того же Delphi, код которого переполнен тоннами ненужных проверок и процедурами, при виде вложенности которых меня охватывает ужас.

Не помешает также применить к нашей жертве какой-нибудь поисковик криптосигнатур. Лучшим, на мой взгляд, является KANAL (PEid plugin), поэтому воспользуемся именно им... Хех, найдено две сигнатуры, и обе относятся к алгоритму Blowfish.

В таких случаях, то есть если обнаруживается какой-либо криптоалгоритм, я обычно сразу же загружаю файл в IDA и от адреса, указанного анализатором, выхожу на процедуру регистрации, попутно распознавая и называя элементы (процедуры, их параметры и переменные) криптоалгоритма более понятными именами. Но такой подход не всегда уместен... Например, этот криптоалгоритм может вообще не использоваться при проверке ключа, а быть лишь для нашего устрашения или использоваться какой-нибудь процедурой программы, совершенно не относящейся к регистрации. Поэтому поступим иначе, а точнее "дедовским" способом =). Запустим программу и откроем форму регистрации. Вводим любую чушь в поля регистрации и нажимаем OK.

Как и следовало ожидать, мы ввели неверный серийный номер, на что и получили соответствующее сообщение.

Как все уже заметили, это обычное сообщение об ошибке и, вернее всего, оно вызывается посредством стандартной функции, а именно - MessageBoxA. Поэтому загрузим нашу цель в OllyDbg и поставим точку останова на эту API.

Когда OllyDbg остановится, нажимаем <Ctrl>+<F9>... Мы тут:

0041AD13|> FF7424 10pushdword ptr [esp+10h] ; /Style

0041AD17|. 50 pusheax ; |Title

0041AD18|. FF7424 10pushdword ptr [esp+10h] ; |Text

0041AD1C|. 51 pushecx ; |hOwner

0041AD1D|. FF15 30334200calldword ptr [<&USER32.MessageBoxA>] ; \MessageBoxA

0041AD23|. 5E pop esi

0041AD24\. C2 0C00retn0Ch

Это лишь процедура показа сообщения... Проходим ret:

00409DFF > 6A 30push30h

00409E01 . 68 34B34200push0042B334h; "DV Capture"

00409E06 . 68 A0BA4200push0042BAA0h; "You have entered an Invalid License Code."

00409E0B . 8BCD mov ecx, ebp

00409E0D . E8 E30E0100call_MessageBoxA

Содержание  Вперед на стр. 057-044-2
Выпуски журнала "СПЕЦ Xakep"
Cпец Хакер #01Cпец Хакер #02Cпец Хакер #03Cпец Хакер #04Cпец Хакер #05Cпец Хакер #06Cпец Хакер #07Cпец Хакер #08Cпец Хакер #09Cпец Хакер #10Cпец Хакер #11Cпец Хакер #12Cпец Хакер #13Cпец Хакер #14Cпец Хакер #15Cпец Хакер #16Cпец Хакер #17Cпец Хакер #18Cпец Хакер #19Cпец Хакер #20Cпец Хакер #21Cпец Хакер #22Cпец Хакер #23Cпец Хакер #24Cпец Хакер #25Cпец Хакер #26Cпец Хакер #27Cпец Хакер #28Cпец Хакер #29Cпец Хакер #30Cпец Хакер #31Cпец Хакер #32Cпец Хакер #33Cпец Хакер #34Cпец Хакер #35Cпец Хакер #36Cпец Хакер #37Cпец Хакер #38Cпец Хакер #39Cпец Хакер #40Cпец Хакер #41Cпец Хакер #42Cпец Хакер #43Cпец Хакер #44Cпец Хакер #45Cпец Хакер #46Cпец Хакер #47Cпец Хакер #48Cпец Хакер #49Cпец Хакер #50Cпец Хакер #51Cпец Хакер #52Cпец Хакер #53Cпец Хакер #54Cпец Хакер #55Cпец Хакер #56Cпец Хакер #57Cпец Хакер #58Cпец Хакер #59Cпец Хакер #60Cпец Хакер #61Cпец Хакер #62Cпец Хакер #63Cпец Хакер #64Cпец Хакер #65Cпец Хакер #66Cпец Хакер #67Cпец Хакер #68Cпец Хакер #69Cпец Хакер #70Cпец Хакер #71Cпец Хакер #72Cпец Хакер #73Cпец Хакер #74Cпец Хакер #75