Исследование защиты программы Programino
Скриншот программы Programino
Programino - интерактивная среда разработки для Arduino с множеством полезных функций и инструментов для профессионалов и любителей. К сожалению, я не специалист по Arudino, о чем, кстати, очень жалею, так что про функционал программы особо рассказать не могу. Но народ хвалит, значит надо брать. Офсайт может не открываться с адресов российских провайдеров, с этим уже как-нибудь сами разберетесь. При таких раскладах будем считать, что и купить Programino законными методами мы не можем.
Если получится, то забираем с офсайта дистрибутив, устанавливаем, смотрим. Программа написана на дотнете, начинаем с обработки главного исполняемого файла при помощи деобфускатора de4dot.
Снимаем обфускацию
Снимаем .NET Reactor, после чего убеждаемся, что распакованный файл запускается без ошибок. А то de4dot выдал предупреждения.
Сообщение о неправильной активации
После запуска первым делом появляется триальное окно, в котором можно ввести регистрационные данные или продолжить испытательный период. На попытку активации левыми данными программа реагирует вот таким сообщением. Исходные данные для исследования у нас теперь имеются. Теперь переходим к декомпиляции. Для этого неизменно используется dnSpy.
Проверка и установка типа лицензии
По тексту сообщения выходим на метод ButtonActivate_Click. В его первой части выполняется проверка длины введенного ключа. Затем поочередно ключ сверяется с внутренними списками ключей, в случае обнаружения совпадения ставится тот или иной тип лицензии. Затем формируется строка с именем пользователя, его почтой и другими данными, которая отправляется на сервер. Эту часть я пропущу в целях экономии места, там ничего сложного для понимания.
Запись регистрационных данных
Если сервер ответил положительно, то в реестр заносятся ключи с разными составляющими регистрации.
Редактируем метод
Открываем метод на редактирование и удаляем из него все лишнее, оставив только установку типа лицензии и запись регистрационных данных в реестр. В результате получается примерно следующее.
Исправленный метод
Компилируем свежесозданный метод, сохраняем измененный модуль. Запускаем его и регистрируем любыми левыми данными.
Программа успешно "зарегистрирована"
Программа благодарит за регистрацию. Закрываем исправленный модуль и пробуем запустить оригинальный файл. И о чудо, оригинальная программа запускается в активированном виде. Надеюсь, что напоминать про блокировку приложения фаерволом вам напоминать не надо. Если программа не предназначена для непосредственной работы с интернетом, то ей там вообще делать нечего.
Программа успешно зарегистрирована
Пропатченный файл-активатор желательно сохранить на тот случай, если понадобится переустановка системы или активация на другом компьютере. Есть большой соблазн просто сохранить регистрационные данные из реестра, но увы, при регистрации выполняется привязка к диску. В остальном цель достигнута.
Просмотров: 809 | Комментариев: 3
Метки: исследование защиты, .NET
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(13.06.2024 в 10:52):
Dr.Web и файервол и антивирус, пользуюсь много лет
username
(13.06.2024 в 10:10):
Man, какой фаервол можешь посоветовать?
pawel97
(09.06.2024 в 08:18):
То ли баг, то ли фича... В общем, можно сделать пустыми строками параметры Privat-Key и User-ID, и распрощаться с привязкой к диску. Раскодировать и расшифровать 0 байт/символов и потом успешно сравнить их - почему бы и нет...
Добавить комментарий
Заполните форму для добавления комментария