...
- * *
Рассмотрим процесс защиты тестового приложения Paint.NET.Anchor _Toc261357123 _Toc261357123
001 Методы выбора функций для защитыДля любого защищаемого приложения существует четыре варианта выбора функций для защиты:Anchor _Toc277872892 _Toc277872892
Anchor _Toc261357124 _Toc261357124
1. Не защищать функцииЭто самый кардинальный вариант, при котором не используется шифратор кода (модуль CodeProtect.exe), и функции не шифруются и не защищаются. Использовать его следует только при непреодолимых проблемах с производительностью защищенного приложения, а также в экзотических случаях, когда необходима лишь символьная обфускация с шифрованием строк.Anchor _Toc277872893 _Toc277872893 Anchor _Toc261357125 _Toc261357125
2. АвтоматическиФункции для шифрования будут выбираться случайным образом. Если необходимо произвести защиту быстро, и производительность защищенного приложения не вызывает нареканий, то использование автоматического выбора оправданно.Anchor _Toc277872894 _Toc277872894
В этом случае будет защищен некоторый процент от общего числа функций, зависящий от положения ползунка Уровень защиты. В случае с Пользовательским уровнем процент защиты может быть установлен самостоятельно разработчиком.Anchor _Toc261357126 _Toc261357126
3. ВручнуюЕсли разработчик хорошо знаком со структурой защищаемого приложения, то он может самостоятельно задать функции для защиты.Anchor _Toc277872895 _Toc277872895
При использовании данного варианта предоставляются две возможности: - Формирование файла включений (списка методов, которые защищаются)
- Формирование файла исключений (списка методов, которые не защищаются)
...
Получившийся конфигурационный файл автоматически передается мастеру лицензирования и используется для защиты.
Файлы включений и исключений применяются независимо друг от друга. При этом, если метод указан в обоих файлах, то исключение имеет приоритет.
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Если производительность работы защищенного приложения вызывает нарекания, можно поработать с ним с использованием профайлера и автоматически измерить время работы отдельных функций, частоту и интенсивность их вызова, и на основании полученных данных сформировать файл включений для защиты.
При выборе варианта На основе профилирования запускается профайлер .NET:
Здесь можно запустить процесс профилирования, или открыть для редактирования ранее созданный файл включений.
На следующем экране профайлера выбрать сборки для профилирования:
Профилировать можно любое число связанных сборок, при этом одна из них должна быть исполняемым файлом.
По нажатию на кнопку Готово происходит анализ всех выбранных сборок приложения и вывод основного окна профайлера: |
...
По завершении процесса в главном окне профайлера выводится подробная информация о приложении: |
|
| |
Условные обозначения | Пояснение |
| |
Оранжевый цвет шрифта | Функция ни разу не вызывалась профайлером |
| |
Зеленый цвет с галочкой | Функция вызывалась и выбрана для защиты |
| |
Зеленый цвет без галочки | Функция вызывалась, но не выбрана для защиты |
|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
После профилирования приложения можно:
...
Для тонкой настройки производительности приложения можно использовать оба метода, но надо учитывать, что каждый раз при автоматическом выборе все пользовательские функции сбрасываются.
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
При нажатии на кнопку Процент защищаемых функций появляется следующее диалоговое окно:
Здесь необходимы небольшие пояснения.
В процессе работы защищенного приложения вызов функции может быть первый или обычный.
При первом вызове функции происходит обращение к электронному ключу и расшифрование тела функции, для его последующего исполнения средой .NET. При обычном вызове уже расшифрованной функции обращения к ключу не происходит, но есть небольшой расход времени на работу защитных механизмов.
В связи с этим, существуют две типичные проблемы с производительностью защищенного приложения:
...
Именно эти критерии и регулируются при автоматическом выборе функций для защиты (см. скриншот выше).
Накладные расходы на вызов функции фиксированы и посчитаны с точностью до микросекунд, поэтому рекомендованные профайлером значения отлично подходят для большинства ситуаций.
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Здесь все довольно просто. Если работа какой то конкретной функции вызывает проблемы после применения автозащиты, ее легко найти и снять отметку:
Например, на скриншоте выше показаны результаты поиска по слову rotate. Если после автозащиты с параметрами по умолчанию было замечено, что в Paint.NET функция Повернуть изображение на 90 градусов стала работать гораздо медленнее, то легко найти ее и снять отметку Защищать.