Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Автоматическая защита .NET предназначена для защиты .NET-сборок (*.exe и *.dll) на платформах x86/x64/Any CPU. Режимы шифрования строк, обфускация графа потока управления, защита кода реализуются с использованием алгоритмов шифрования, которые вызываются из электронного ключа.

Различные модели электронных ключей Guardant помогут как реализовать режимы лицензирования по количеству запущенных копий в сети (Guardant Net), так и ограничить время работы (Guardant Time) либо приложения в целом, либо его отдельныx сборок. С помощью технологии псевдокода сам Native-контейнер и методы доступа к нему надежно защищены от статического и динамического анализа. Он реализует интерфейс для дешифрования данных c помощью электронного ключа Guardant, осуществляет проверку целостности, дешифрование и загрузки VM.

Рекомендации

Пользуйтесь символьным обфускатором и утилитой защиты MSIL-кода. При этом целесообразно использовать следующие опции:

  • Символьная обфускация. Позволяет производить запутывание кода приложения, что вместе с другими мерами серьезно повышает уровень защищенности приложения. Используйте обфускацию для всех *.exe и *.dll сборок в приложении, за исключением сторонних и подписанных цифровой подписью.
  • Шифрование строк. Привязывает обфусцируемое приложение к ключу Guardant и шифрует строковые константы в защищаемых сборках. Рекомендуется использовать эту опцию, если в приложении нет логических элементов, сильно зависящих от быстродействия строковых констант.
  • При использовании опции обфускации публичных интерфейсов происходит более полная обфускация всей сборки. Однако будьте осторожны, использование этой опции возможно лишь при замкнутости системы (все сборки обфусцируются в одном сеансе, из других приложений никакие методы обфусцируемых сборок не используются). В большинстве случаев безопасно проводить обфускацию публичных интерфейсов для exe-сборок (кроме случаев использования технологии Reflection на самой сборке или экспорта типов для других приложений).
  • Используйте файл с исключениями. Для его генерации можно воспользоваться утилитой ExclusionUtility.exe, входящей в комплект разработчика. В общем, разработчик приложения должен отчетливо понимать какие типы, методы и свойства необходимо вносить в исключения символьного обфускатора. Как правило, это все те языковые элементы, что могут быть использованы извне. Обратить внимание следует на использование технологий Serialization, Reflection, DataDinding.

При использовании утилиты автоматической защиты MSIL-кода необходимо помнить:

  • Используйте разумно опцию с указанием процента защищаемых методов. Чем больше и сложнее защищаемое приложение, тем меньше необходимо указывать процент. В общем случае, процент 100 можно выставлять для самых простых и нетребовательных к скорости выполнения сборок, содержащих 2 – 3 типа по 10 – 15 методов каждый. Для больших проектов % следует понижать до 10.
  • Не защищайте чувствительные к скорости работы сборки, типы и методы. Помните, что вынос MSIL-кода в шифрованную область и выполнение его на виртуальной машине может в отдельных случаях существенно замедлять его выполнение (особенно при первом вызове). При дальнейших вызовах также присутствуют накладные расходы, и чем меньше размер метода, тем заметнее падает скорость ее выполнения.
  • Пользуйтесь опцией и утилитой для задания исключений. Исключайте из защиты все небольшие по объему методы, не содержащие логики, имеющую коммерческую ценность.
  • При работе совместно с символьным обфускатором необходимо использовать опцию создания MAP-файла (подробнее см. Часть 1 настоящей документации).
  • Исключайте вся языковые элементы, построенные на асинхронной передаче данных. Защита MSIL-кода таких элементов может приводить к непредсказуемым результатам.