
Скриншот программы 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, можете убедиться, что никаких ограничений у нее теперь нет.