Versions Compared

Key

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

...

  • * *
    Рассмотрим процесс защиты тестового приложения Paint.NET.

    Anchor
    _Toc261357123
    _Toc261357123
    Anchor
    _Toc277872892
    _Toc277872892
    001 Методы выбора функций для защиты

    Для любого защищаемого приложения существует четыре варианта выбора функций для защиты:

    Anchor
    _Toc261357124
    _Toc261357124
    Anchor
    _Toc277872893
    _Toc277872893
    1. Не защищать функции

    Это самый кардинальный вариант, при котором не используется шифратор кода (модуль CodeProtect.exe), и функции не шифруются и не защищаются. Использовать его следует только при непреодолимых проблемах с производительностью защищенного приложения, а также в экзотических случаях, когда необходима лишь символьная обфускация с шифрованием строк.

    Anchor
    _Toc261357125
    _Toc261357125
    Anchor
    _Toc277872894
    _Toc277872894
    2. Автоматически

    Функции для шифрования будут выбираться случайным образом. Если необходимо произвести защиту быстро, и производительность защищенного приложения не вызывает нареканий, то использование автоматического выбора оправданно.
    В этом случае будет защищен некоторый процент от общего числа функций, зависящий от положения ползунка Уровень защиты. В случае с Пользовательским уровнем процент защиты может быть установлен самостоятельно разработчиком.

    Anchor
    _Toc261357126
    _Toc261357126
    Anchor
    _Toc277872895
    _Toc277872895
    3. Вручную

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

...

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

Anchor
_Toc261357127
_Toc261357127
Anchor
_Toc277872896
_Toc277872896
4. На основе профилирования

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

Здесь можно запустить процесс профилирования, или открыть для редактирования ранее созданный файл включений.
На следующем экране профайлера выбрать сборки для профилирования:


Профилировать можно любое число связанных сборок, при этом одна из них должна быть исполняемым файлом.

По нажатию на кнопку Готово происходит анализ всех выбранных сборок приложения и вывод основного окна профайлера:

...

По завершении процесса в главном окне профайлера выводится подробная информация о приложении:

 

 

Условные обозначения

Пояснение

 

Оранжевый цвет шрифта

Функция ни разу не вызывалась профайлером

 

Зеленый цвет с галочкой

Функция вызывалась и выбрана для защиты

 

Зеленый цвет без галочки

Функция вызывалась, но не выбрана для защиты

 

 

Anchor
_Toc261357128
_Toc261357128
Anchor
_Toc277872897
_Toc277872897
Принципы выбора функций

После профилирования приложения можно:

...

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

Anchor
_Toc261357129
_Toc261357129
Anchor
_Toc277872898
_Toc277872898
Автоматический выбор функций

При нажатии на кнопку Процент защищаемых функций появляется следующее диалоговое окно:

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

...

Именно эти критерии и регулируются при автоматическом выборе функций для защиты (см. скриншот выше).
Накладные расходы на вызов функции фиксированы и посчитаны с точностью до микросекунд, поэтому рекомендованные профайлером значения отлично подходят для большинства ситуаций.

Anchor
_Toc261357130
_Toc261357130
Anchor
_Toc277872899
_Toc277872899
Ручной выбор функций

Здесь все довольно просто. Если работа какой то конкретной функции вызывает проблемы после применения автозащиты, ее легко найти и снять отметку:

Например, на скриншоте выше показаны результаты поиска по слову rotate. Если после автозащиты с параметрами по умолчанию было замечено, что в Paint.NET функция Повернуть изображение на 90 градусов стала работать гораздо медленнее, то легко найти ее и снять отметку Защищать.