Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #57, АВГУСТ 2005 г.

"Временная" защита

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

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


Методы работы trial-защит

Первый вопрос, который, обычно, задают новички крэкинга: "Как побороть ту или иную trial-защиту?". И это совершенно естественно. Как известно, это самый популярный вид защиты. Прочитав эту статью, ты научишься довольно быстро справляться с trial-защитой.

Trial-азбука

Trial ("испытание", "пробный") - это один из видов защиты программ, распространяемых по лицензии shareware. Его принцип заключается в том, что пользователю предоставляется для ознакомления полностью функциональная версия программы, но ограниченная по времени использования. Для того чтобы убрать это ограничение, необходимо купить программу... или воспользоваться народными методами ;).

Вспомни, как ты, запустив свою любимую программу, с негодованием смотрел на всплывающее окно с просьбой зарегистрироваться за энное количество у.е. и демонстрирующий себя тебе trial-счетчик, который навевал мысли о приближении конца срока использования. И вот этот прекрасный день настал: при запуске программы ты со вселенским ужасом в глазах лицезрел финальное NAG-окно с ужасной фразой "Trial license has Expired." Ты наверняка не растерялся и пошел на свой любимый сайт в поиске "лекарства" и, я уверен, нашел crack, который благополучно не подошел, сославшись на неверный размер или CRC целевого файла. Секундное недоумение, и у тебя возникла новая мысль, а именно - найти серийный номер. И, о чудо! Он нашелся и подошел ;). Могу лишь представить, как ты был ошарашен и расстроен, когда, через некоторое время, а может быть, даже при следующем запуске регистрация и работа с программой были заблокированы :( (в интернете сидел?). Только теперь, зайдя на все тот же warez'ный сайт, где был найден регистрационный ключ, ты обнаружил сообщение, предупреждающее всех, что в программе предусмотрен online-тест. Там же наверняка приложено подробное руководство по разблокированию программы и дан "мудрый" совет запретить программе какое-либо общение с интернетом. Это не наш путь. Крэкеры мы или нет? Да =)! Значит, будем зрить в корень, а точнее в ассемблерный листинг.

От слов к делу

Итак, существует несколько особенностей trial-защит, на каждую из которых есть свой метод противодействия. Собственно, о самых стандартных я сейчас и попытаюсь рассказать.

1. Trial-счетчик

Да, это самая главная особенность. Какой, скажите мне, может быть trial без счетчика =)? Trial-счетчик - это обычный счетчик, связанный с какой-либо скрытой переменной. Его увеличение/уменьшение зависит от каких-либо системных особенностей, обычно от даты. По достижении определенного числа нормальная работа с программой блокируется.

Суть, я думаю, ясна. Скрытая переменная может находиться либо в файле, либо в реестре. Поэтому вспомним стандартный набор Windows API, которые обычно используются при этом, а также рассмотрим примеры исследования:

1) Для работы с реестром: RegQueryValueA, RegQueryValueExA, RegOpenKeyA и т.д.

Пример: в качестве цели мы возьмем программу MP3 Audio Converter, которая живет по адресу www.ezsoftmagic.com.

Ничем не запакована, написана на Microsoft Visual C++, trial - 15 дней. Откроем ее в IDA и после завершения дисассемблирования пойдем в закладку Imports. Ищем там одну из API-функций для работы с реестром, например RegQueryValueExA, щелкаем по ней два раза и поочередно просматриваем все участки кода, вызывающие ее.

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