Blog. Just Blog

Исследование защиты программы Sharp World Clock

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы Sharp World Clock
Скриншот программы Sharp World Clock

Программа Sharp World Clock позволяет добавлять на рабочий стол виджеты с различным мировым временем по городам и часовым поясам. Хорошее подспорье для столичных менеджеров, которые постоянно забывают, что в Петропавловске-Камчатском - полночь.

Скачиваем дистрибутив последней версии, устанавливаем, смотрим. Главный исполняемый файл написан на дотнете, а также накрыт обфускатором.

Снимаем обфускатор
Снимаем обфускатор

Снимаем обфускацию с помощью de4dot, после чего отправляем файл на анализ в dnSpy. Никогда не перестану повторять, что на сегодняшний день это лучший инструмент для реверса и анализа дотнетовских приложений.

Окно регистрации
Окно регистрации

Параллельно посмотрим, как выполняется активация. Онлайновый вариант нам сразу не подходит, было бы странно вообще предположить, что сервер примет какой-то левый серийник. А вот активация в оффлайне - это совсем другое дело. К тому же программа сама любезно подсказывает какого формата серийник ей нужен. Ок, давайте введем что-нибудь типа "1111-1111-1111-0000-0000-0000-0000-0000", лишь бы строка соответствовала формату.

Вторым пунктом инструкции по активации следует "Save". Нажимаем. Программа предлагает сохранить текстовый файл с именем "Sharp World Clock License Info.txt", у меня получилось что-то типа такого:

************************************************************
************ Sharp World Clock 9.6.4 *********************
************************************************************
***************** License Key ******************************
1111-1111-1111-0000-0000-0000-0000-0000
************************************************************
***************** Computer-ID ******************************
xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx
************************************************************
Send this to the author for an offline activation key:
http://www.programming.de/index.php/contact
************************************************************

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

Сообщение о неправильной активации
Сообщение о неправильной активации

На попытку ввести левый ключ активации программа реагирует похожим сообщением, любезно предоставляя информацию об ожидаемом формате этого самого ключа.

Сообщение о неправильной активации
Сообщение о неправильной активации

Если ввести левую строку, но правильного формата, то программа реагирует вот таким сообщением. Отлично, все исходные данные у нас имеются, переходим в dnSpy.

Функция проверки активации
Функция проверки активации

Поиском по строке сообщения выходим на следующий код. Тут выполняется сравнение результатов еще одной функции проверки и значения из поля ввода.

Ставим точку останова
Ставим точку останова

Ставим точку останова на строку 295, запускаем программу и повторяем активацию с тем же левым серийником и левым кодом активации. Когда точка останова сработает, надо пройти эту команду один раз в пошаговом режиме.

Проверяемые значения
Проверяемые значения

В окне локальных переменных обнаружится некоторое количество характерных строк. Тут код компьютера, введенный серийный номер, а в самом конце будет еще одна строка, у меня это "D8E8-18BF-1275-8C3A-5762-B505-F809-95EA". И вот именно с ней выполняется сравнение введенного кода активации. Несложно понять, что перед нами искомый код активации для нашего левого серийника. Закрываем отладку, выходим из dnSpy.

Программа успешно зарегистрирована
Программа успешно зарегистрирована

Запускаем программу в обычном режиме, повторяем оффлайновую активацию с тем же левым серийником, но с найденным кодом активации. Программа благодарит за активацию. Цель достигнута. При желании можно декомпилировать метод, где проверяется активация, и заменить вывод сообщения на вывод результата функции проверки. Тогда программа будет работать как генератор ключей активации для конкретного компьютера, любезно подсказывая пользователю, что ему надо ввести. Но это уже вам в качестве домашнего задания.

Поделиться ссылкой ВКонтакте
Просмотров: 691 | Комментариев: 3

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Илья (04.11.2023 в 08:53):
de4dot не справляется с деобфускацией данного файла. Посмотрите, у вас if (a7.a() == ...), а также после такой деобфускации он не компилируется.
ManHunter (31.10.2023 в 13:38):
Надо прочитать статью дальше первого абзаца.
adnext (31.10.2023 в 13:24):
Здравствуйте, а если net обфусцирован, как поступать?
Спасибо.

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0041 сек.) / Память: 4.5 Mb
Наверх