Общая информация
В данной статье описана последовательность действий в графической версии утилиты Guardant Protection Studio для защиты нативных и .NET программ.
Термины и определения
Заморозка потока – мгновенная приостановка работы защищенной программы при извлечении ключа Guardant.
Компонент – функциональная часть программы, которую необходимо лицензировать. Компонентами могут быть исполняемые файлы, модули, фрагменты программного кода, отдельно взятые функции или вся программа целиком.
Код доступа – уникальный идентификатор и набор паролей для встраивания в защищаемую программу, принадлежащий разработчику, использующему технологии Guardant.
Обфускация внешних интерфейсов – обфускация символов для публичных методов и свойств.
Обфускация потока выполнения – степень запутывания последовательности выполнения кода защищаемой программы, при которой код разбивается на несколько блоков, в него добавляются фальшивые блоки, и последовательность их выполнения скрывается от анализа.
Обфускация символов – замена имен типов, событий, свойств и методов случайным набором символов.
Шифрование строк – шифрование строковых констант в защищаемой программе.
Алгоритм защиты нативных программ
- Создать Проект защиты.
- Добавить программу или ее часть, которую необходимо защитить и привязать к лицензии.
- Указать директорию, в которой будет сохранена защищенная программа.Для защиты программы для CI/CD необходимо, чтобы все файлы и папки были сохранены на одном диске.
- Привязать программу к соответствующему компоненту в системе Guardant Station.
- Указать необходимость проверки лицензии при запуске защищенной программы.
Для библиотек-плагинов и сервисов необходимо отключить проверку лицензии при запуске.
- Выбрать секции программы для шифрования.
- Выбрать функции программы для защиты (при наличии загрузить .map файл).
Для защиты необходимо выбирать важные с точки зрения работы программы функции, которые регулярно используются. При этом выбор очень большого количества функций или слишком «тяжеловесных» может привести к серьезному уменьшению скорости работы защищенной программы.
Защищенные функции невозможно использовать без наличия ключа с нужной лицензией, т. к. они не будут расшифрованы. Этот механизм является гарантией проверки наличия лицензии во время работы защищенной программы.
- Привязать программу к соответствующему продукту в системе Guardant Station.
- Задать режим поиска компонента, к которому привязана программа, и определить тип ключа для его поиска.
- Установить файл заставки (при необходимости).
- Изменить текст стандартных сообщений, которые будет выводить защищенная программа при наступлении событий, связанных с лицензией (при необходимости).
- Задать выходную директорию для динамических библиотек, необходимых для работы защищенной программы (далее – динамические библиотеки).
- Указать необходимость вывода пользователю защищенной программы сообщений о событиях, связанных с лицензией.
- Указать необходимость отслеживания извлечения ключа из компьютера пользователя, на котором запущена защищенная программа.
- Указать коды доступа.
- Задать общее имя динамических библиотек.
- Указать необходимость приостановки потоков.
- Сохранить Проект защиты.
- При использовании графического интерфейса – нажать кнопку Защитить (Protect), при использовании консольного – ввести в командную строку (терминал) соответствующую команду с необходимыми опциями.
Алгоритм защиты .NET программ
Для защиты .NET программы в Guardant Protection Studio x86 необходимо установить .NET Core 3.1 runtime x86, для защиты в Guardant Protection Studio x64 – .NET Core 3.1 runtime x64.
Для запуска защищенной .NET программы необходимо установить .NET 6 runtime x64.
- Создать Проект защиты.
- Добавить программу или ее функциональную часть, которую необходимо защитить и привязать к лицензии.
- Указать директорию, в которой будет сохранена защищенная программа.
Для защиты программы для CI/CD необходимо, чтобы все файлы и папки были сохранены на одном диске.
- Привязать программу к соответствующему компоненту в системе Guardant Station.
- Указать необходимость проверки лицензии при запуске защищенной программы.
Для библиотек-плагинов и сервисов необходимо отключить проверку лицензии при запуске.
- Указать необходимость проброса исключений.
- Указать функции программы, которые необходимо защитить.
- Привязать программу к соответствующему продукту в системе Guardant Station.
- Задать режим поиска компонента, к которому привязана программа, и определить тип ключа для его поиска.
- Изменить текст стандартных сообщений, которые будет выводить защищенная программа при наступлении событий, связанных с лицензией (при необходимости).
- Задать выходную директорию для динамических библиотек.
- Указать необходимость вывода пользователю защищенной программы сообщений о событиях, связанных с лицензией.
- Указать необходимость отслеживания извлечения ключа из компьютера пользователя, на котором запущена защищенная программа.
- Указать коды доступа.
- Задать общее имя динамических библиотек.
- Указать необходимость обфускации символов.
- Указать необходимость обфускации внешних интерфейсов.
Обфускация внешних интерфейсов применяется только совместно с обфускацией символов.
- Указать необходимость обфускации потока выполнения.
- Указать необходимость шифрования строк.
- Сохранить Проект защиты.
- При использовании графического интерфейса – нажать кнопку Защитить (Protect), при использовании консольного – ввести в командную строку (терминал) соответствующую команду с необходимыми опциями.