Защита программ


Седьмой этап - преодоление системы защиты. - часть 3


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

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

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

  • Трудность распространения продукта (требуется пользовательская документация, необходимо специальное оборудование, объём продукта затрудняет его распространение по сети и т.п.)
  • Устойчивость к поиску проявлений системы защиты (маскировка факта срабатывания системы защиты);
  • Устойчивость к предварительному анализу защищённого продукта (маскировка функциональности системы защиты);
  • Устойчивость к предварительному анализу программного кода (маскировка физического расположения системы защиты в коде продукта);
  • Наличие уязвимостей в системе защиты;
  • Устойчивость к статическому и динамическому анализу кода (противодействие анализу алгоритмов системы защиты);
  • Устойчивость к обходу системы защиты (наличие логических ошибок в алгоритмах защиты);
  • Устойчивость к преодолению системы защиты (трудность статической и динамической модификации кода продукта).




Начало  Назад  Вперед



Книжный магазин