Исследование защиты программы Easy System Utility
Скриншот программы Easy System Utility
Easy System Utility - бессмысленный набор всяких невнятных утилит типа для оптимизации системы, генератора паролей, переименования файлов, конвертирования графики и всякого подобного. Школьное поделие из серии "так могу, и вот так могу, и еще вот такую либу где-то подтянул, ее тоже прикручу". Внутри так вообще полный комплект антипаттернов, как не надо писать программы. А вот денег это чудо программерской мысли просит по-взрослому. Но обо всем по порядку.
Забираем с офсайта дистрибутив, устанавливаем, запускаем, смотрим. Предварительный анализ показывает, что программа написана на дотнете, поэтому дизассемблер сегодня отдохнет, а в дело пустим декомпилятор для дотнета dnSpy.
Да, кстати, во время работы Easy System Utility очень настойчиво пытается выбраться в интернет. Как я уже не раз говорил, если какая-то программа не предназначена для работы с интернетом, то ей в этом самом интернете делать вообще нечего. Сразу же блокируем подобную активность фаерволом.
Сообщение о неправильной регистрации
Попробуем активировать программу каким-нибудь левым серийником, чтобы посмотреть ее реакцию. Реакция сводится к сообщению "Product key incorrect".
Проверка серийника при вводе
Поиском по строке dnSpy любезно выдает следующий код. Тут видно, что сперва формируется мегастрока из ресурсных строк "Productkeys_Yearly_Label" и "Productkeys_Lifetime_Label", затем проверяется факт вхождения введенного серийника в эту мегастроку, затем проверяется длина этого самого серийника. Если все условия выполнены, то выводится благодарочка, а введенный серийник сохраняется в профильную папку в файл "productkey.txt". После чего требуется перезапуск программы.
Список серийников для пожизненной лицензии
По ссылке на строки выходим на весьма интересую информацию. Это список из нескольких сотен готовых серийников, точнее даже два списка. Один для пожизненных лицензий, второй для лицензий на год. С ними и производится сравнение. Возьмем какой-нибудь серийник из списка, например, KQVTN-EQABU-IZIBN-LDMIZ-RFYGI и попробуем активировать программу.
Программа успешно зарегистрирована
Активация прошла успешно, можно даже убедиться, что файл с серийником успешно создан. Поскольку больше никаких условий тут нет, просто перезапускаем программу. Иииии... Программа снова считает себя не зарегистрированной. Значит не зря требовался перезапуск, при старте выполняются какие-то дополнительные проверки. Поиском по имени файла выходим на следующий код:
Проверка серийника при запуске
Первая проверка ничего необычного не показывает, тут просто читается содержимое файла и точно так же сверяется с данными ключей из ресурсов. Если все нормально, то переменной "GlobalActivatePro" присваивается значение "True". А вот для того, что происходит дальше, цензурного описания у меня нет. Проверяется наличие активного интернет-соединения и, если программу не выпускают в сеть, то "GlobalActivatePro" принудительно сбрасывается в "False". Простыми словами: даже если ты в состоянии помутнения рассудка все-таки купил это поделие, то ты все равно не сможешь работать с программой без добровольного слива инфы с твоего компа куда-то в интернет.
Редактируем метод
Открываем метод на редактирование в режиме IL-команд, заменяем значение "False" на "True", тем самым программа не будет сбрасывать активацию без наличия интернет-соединения. Выбор такого режима редактирования связан с тем, что метод после декомпиляции не собирается обратно без ошибок, а кромсать еще десяток всяких косяков сборщика мне в данном примере не хочется. Если интересно, то можно открыть метод на редактирование в обычном режиме и вырезать всякие неиспользуемые списки, обработчики и прочее, на что укажет компилятор. На работоспособности это не скажется. Независимо от выбранного способа хирургии, сохраняем сборку, проверяем.
Программа успешно "зарегистрирована"
Программа считает себя нормально активированной, все PRO-инструменты доступны, цель достигнута. Можно удалять этот ужас со своего компа, тем самым значительно оптимизировав его работу и повысив безопасность.
Просмотров: 276 | Комментариев: 5
Метки: исследование защиты, .NET
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(26.08.2024 в 11:00):
Увы, с Java не работаю ни в кодинг, ни в реверсинг.
Илья
(26.08.2024 в 07:44):
За подсказку режима редактирования IL в dnSpy отдельное большое спасибо.
Может вы знаете подобный инструмент dnSpy но для Java?
Может вы знаете подобный инструмент dnSpy но для Java?
ManHunter
(24.08.2024 в 20:21):
Аноним, на хитрую жопу есть хер с винтом: https://www.manhunter.ru/softw...l_hosts.html
Малоизвестный способ, который в некоторых случаях очень неплохо помогает.
Малоизвестный способ, который в некоторых случаях очень неплохо помогает.
Аноним
(24.08.2024 в 20:17):
Знакомые методы... разработчик Total Uninstall в борьбе с пользователями тоже дошёл до того, что его программа проверяет наличие в системе всех известных сторонних файерволлов и если файерволл есть, а доступа к сайту нет, программа считает, что ей блокируют проверку серийника и сбрасывает регистрацию в ноль. Также он проверяет содержимое hosts и наличие правил брандмауэра Windows, которые блокируют доступ его программе в интернет, или доступ к диапазонам IP-адресов, куда попадает его сайт.
Добавить комментарий
Заполните форму для добавления комментария
Ох, скоро станет он многоизвестным Вашими стараниями...