Blog. Just Blog

Исследование защиты программы Diving Log

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

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

Забираем с офсайта дистрибутив, устанавливаем, смотрим. Еще при установке инсталлятор предупреждает, что для работы программы требуется .NET Framework, так что было б странным сомневаться, на чем оно все написано. Для регистрации программа открывает вот такую форму.

Окно для ввода серийного номера
Окно для ввода серийного номера

На ввод левых регистрационных данных программа никак не реагирует. Со стороны автора это правильное решение, меньше возможности для нахождения зацепок.

В наше время сложно найти программу на дотнете, которая не была бы обработана тем или иным обфускатором. Diving Log не исключение. Скармливаем главный исполняемый файл de4dot, но указываем параметр "--dont-rename", как он просит. Деобфускация проходит без проблем.

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

Отправляем распакованный файл в dnSpy, затем в дереве ресурсов в модуле "Divinglog" находим форму регистрации "frmReg":

Форма регистрации в ресурсах
Форма регистрации в ресурсах

Последовательным просмотром ее обработчиков выходим на обработку изменения текста в поле регистрационного имени:

Вызов функции проверки
Вызов функции проверки

Тут нас интересует вызов функции с характерным именем "CheckCode60". Кликом на названии переходим на эту функцию, где, в свою очередь, вызывается еще одна функция с таким же названием. Еще один клик и нашему взору открывается замечательная картина. Весь алгоритм генерации серийного номера содержится во втором экземпляре функции "CheckCode60". Можно просто скопировать в кейген и будет готовый релиз. Я в писательстве на дотнете не силен, так что это останется вам в качестве домашнего задания. А вот отследить правильную регистрационную пару можно прямо в dnSpy.

Алгоритм генерации серийника
Алгоритм генерации серийника

Ставим точку останова (F9) на команду return, запускаем программу на выполнение, повторяем регистрацию. Проверка выполняется после каждого введенного символа, так что лучше набрать регистрационное имя где-нибудь в Блокнотике, а потом просто вставить в соответствующее поле. Когда точка останова сработает, в логе переменных будет следуюшая картина:

Значения переменных
Значения переменных

То есть регистрационному имени "ManHunter / PCL" соответствует правильный серийный номер "DL6.0-284-0498856270". Деактивируем точку останова и повторяем регистрацию с найденными данными.

Регистрационный номер правильный
Регистрационный номер правильный

На этот раз при вводе серийника рядом с полем появляется зеленая галочка, что сигнализирует о правильности введенных данных.

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

В окне "О программе" красуется регистрационное имя и серийник.

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

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

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 569 | Комментариев: 1

Комментарии

Отзывы посетителей сайта о статье
voffka (09.01.2022 в 22:12):
Пляски с de4dot тут лишние, exe чистый.

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

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

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