Blog. Just Blog
Исследование защиты программы Flagimation

Скриншот программы Flagimation
Программа Flagimation предназначена для создания красивых анимированных GIF-картинок в виде развевающегося флага. Интерфейс простейший, настройки тоже. Открываете картинку, которую хотите превратить во флаг, выбираете параметры качества и скорости анимации, после этого сохраняете готовый GIF. И все это за 20 баксов, ага.
Скачиваем дистрибутив, распаковываем, устанавливаем. Поищем что-нибудь, связанное с регистрацией. В меню About - Register обнаруживается вот такое окно:

Окно регистрации программы
На левые регистрационные данные программа реагирует сообщением: "Sorry. The registration number is incorrect. Please try again." Поищем эту текстовую строку в файле. Файл не упакован, проблем с поиском нет.

Нехорошая строка найдена
Программа написана на Delphi, поэтому воспользуемся новым инструментом - IDR (Interactive Delphi Reconstructor) - декомпилятором исполняемых файлов (EXE) и динамических библиотек (DLL), написанных на языке Delphi и выполняемых в среде 32х-разрядных операционных систем Windows. Загружаем исполняемый файл в IDR, ждем когда он завершит работу. Теперь перейдем в режим поиска строк (F8) и поищем в списке строку о неправильной регистрации. Увы, ее нет, так же как и строки об успешной регистрации.

Декомпиляция программы с помощью IDR
Зато найдется другая строка, которая присутствует в окне ввода серийного номера: "This software is shareware, and may be reviewed for 14 days. Continued use requires that you register." Зачем нам она нужна? IDR позволяет просматривать обработчики формы, а нам сейчас как раз надо найти форму регистрации, поэтому в правой части окна выберем перекрестную ссылку, которая указывает на эту строку. В окне дизассемблера сперва будет скучный код формирования формы, заполнения текстовых полей, а вот ниже обнаружится такой любопытный кусочек:

Код получения данных из формы регистрации
Не надо быть семи пядей во лбу, чтобы понять, что тут происходит. Берутся введенные значения из текстовых полей имени и серийного номера, после этого вызывается какая-то функция проверки, и если она вернула AL=0, то выводится сообщение о неправильной регистрации. Нас интересует функция по адресу 0046E768, ведь похоже, что именно она отвечает за защиту. Запускаем программу под отладчиком и поставим точку останова на адрес 0046E768, после этого попробуем зарегистрировать ее каким-нибудь левыми данными.

Запускаем программу под отладчиком
Когда точка останова сработает, пройдем код в пошаговом режиме. Сперва проверяется заполненность регистрационного имени и серийного номера, затем из имени путем преобразования получается какая-то строка, а затем на ее основе генерируется правильный код для проверки. Это все видно в стеке. После этого по адресу 0046E7F8 вызывается функция сравнения. В регистрах EAX и EDX виден наш кривой серийник и сгененированный правильный.

Функция проверки серийного номера
Сохраним серийный номер 30267332 и попробуем повторить регистрацию с тем же именем, но уже с правильным кодом. Программа радостно сообщит, что она успешно зарегистрирована.

Программа успешно зарегистрирована
Кстати, если посмотреть еще в списке строк, то там обнаружится любопытное послание: "Hey - why do you use such a strange name? Everyone can search for a registration key. But if I do not get paid, I cannot buy something to eat, which means I have to die, so you will not get updates any more. I just wanted to say." Оно появляется на попытку ввести регистрационное имя "NICESHOP" или "CZY". Судя по тому, что программа не обновлялась уже несколько лет, похоже, что аффтар все-таки склеил ласты с голодухи. А мы успешно выловили нужный серийник и попробовали в деле новый инструмент.

Сэкономленная денежка
Эта анимация сделана в зарегистрированной версии программы Flagimation, можете убедиться, что никаких ограничений у нее теперь нет.
Просмотров: 2435 | Комментариев: 5
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(06.01.2011 в 16:58):
Автору и так полнейший респект и уважуха за такой грамотный инструмент.
crypto
(06.01.2011 в 16:45):
Интересно, где же во фразе
<<< База знаний для версии 2010 kb2010.bin защищена паролем, обращайтесь к автору.
AyTkACT разглядел слово бабло ??? :-)
Что касается остальных замечаний - не все сразу, надо автору тоже передышку давать.
<<< База знаний для версии 2010 kb2010.bin защищена паролем, обращайтесь к автору.
AyTkACT разглядел слово бабло ??? :-)
Что касается остальных замечаний - не все сразу, надо автору тоже передышку давать.
AyTkACT
(16.12.2010 в 08:24):
IDR - вообще полезная штука. Жаль что она работает только с неупакованными, только 32 битными и что с 2010 только за бабло :(
<<< База знаний для версии 2010 kb2010.bin защищена паролем, обращайтесь к автору.
<<< База знаний для версии 2010 kb2010.bin защищена паролем, обращайтесь к автору.
Isaev
(15.12.2010 в 02:19):
:) Это первый тутор с IDR! Вообще наверное первый...
checkbox
(14.12.2010 в 14:14):
<<<Эта анимация сделана в зарегистрированной версии программы Flagimation, можете убедиться, что никаких ограничений у нее теперь нет.
действительно, ввел вышеозначенные рег.данные, прога зарегилась, спс за серийнег ;)
действительно, ввел вышеозначенные рег.данные, прога зарегилась, спс за серийнег ;)
Добавить комментарий
Заполните форму для добавления комментария
