warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
На примере программы, использующей одну из последних версий Obsidium, попробуем разобрать слабые и сильные места этой защиты. В статье, посвященной другому известному протектору — Enigmа, я рассказывал о популярном у разработчиков способе защиты приложения: пользователю предоставляется ознакомительный период работы с программой — можно использовать ее определенное время или выполнить определенное количество запусков. Есть такая возможность и у Obsidium. Скачав с официального сайта демоверсию защиты (последняя актуальная версия — 1.7.3.3), запускаем ее.
Для начала, как нам советуют, создадим новый проект и в его настройках укажем защиту приложения в виде триального периода. Для этого жмем в левой вертикальной панели графическую кнопку с шестеренками Settings и открываем вторую справа вкладку Time trial.
Как видишь, здесь присутствует такой же джентльменский набор функций, как и в Enigma:
- триал до определенной даты;
- триал на определенное количество дней;
- триал на определенное количество запусков.
Немного неочевидным кажется предназначение четырех полей ввода в левой нижней части окна под общим заголовком User-defined trial counters. На самом деле, как я уже говорил, для тех привередливых пользователей, которым мало стандартной защиты по времени или количеству запусков, Obsidium предлагает набор своих функций для интеграции в программу. В качестве одного из вариантов разработчик может устанавливать собственные триальные счетчики, контролируемые прямо из кода во время выполнения программы. Это четыре целочисленные 16-битные переменные, сохраняемые в системе до следующего запуска программы, значения которых можно читать функцией int
и декрементировать функцией bool
. Эту функцию можно использовать, например, если мы хотим, чтобы программа после десяти сохранений блокировала функцию Save и продолжала дальше работать как ни в чем не бывало, без дальнейшей возможности сохранить файл на диск. Этот инструментарий предоставляет пользователям более гибкие возможности управления триалом.
После установки нужных параметров защиты жмем вторую снизу кнопку в левой панели с надписью PROTECT, затем на вкладке Executables выбираем файл защищаемой программы и, наконец, нажимаем кнопку Protect all. Теперь наше приложение под защитой демоверсии Obsidium, о чем нам будет напоминать раздражающее окошко при каждом ее запуске.
Потренировавшись на кошках, перейдем к взлому приложения. Итак, у нас имеется триальная версия программы, которую DIE идентифицирует следующим образом:
Obsidium v1.5.4.x - [ v1.6.x.x - 1.x.x ] - Obsidium Software - www.obsidium.de *ACM , Overlay : FE4711... Nothing detected
С первого взгляда очевидно, что загружать такое в дизассемблер совершенно бесполезно: код сильно сжат или зашифрован (на самом деле и то и другое). Секции пустые, из импорта имеются в наличии всего четыре функции. Попробуем сразу загрузить ее в отладчик.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»