You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Общее описание

Точка проверка лицензии – это точка следования незащищенной программы, при достижении которой происходит обращение к библиотеке защиты.

Существует 3 типа точек проверки лицензии:

  1. Проверка при запуске приложения.
    Выполняется для каждого файла программы, у которого при защите включена настройка Проверка при запуске. Для нативных программ выполняется до достижения функции main, для программ .NET – до достижении метода Main.
  2. Проверка при запросе защищенного артефакта.
     Выполняется для каждого файла программы, у которого были успешно защищены:
    • функции (только для нативных программ);
    • методы (только для программ .NET);
    • обфусцированы потоки управления (только для программ .NET);
    • зашифрованы строки (только для программ .NET).
  3. Проверка, вызванная настройками мониторинга.
    Выполняется для проектов, у которых включена настройка Мониторинг аппаратного ключа или Мониторинг сетевого ключа. Проверка осуществляется при определенных условиях: для настройки Мониторинг аппаратного ключа – сразу при извлечении аппаратного ключа из компьютера, для настройки Мониторинг сетевого ключа – если во время проверки по истечении указанного интервала времени подходящая сетевая лицензия не была найдена (по умолчанию проверки выполняются каждые 5 минут).

Общий алгоритм обработки ошибок

В случае возникновения ошибки при проверки лицензии, в том числе при отсутствии подходящей лицензии, выполняются следующие действия:

  1. Уведомление пользователя об ошибке посредством диалогового окна или вывода сообщения в стандартный поток ошибок.
  2. Обработка ошибки.
    Пользователю предлагается повторить попытку поиска лицензии (например, подключив к компьютеру аппаратный ключ с подходящей лицензией или активировав лицензию) или отменить поиск лицензии. Отмена поиска лицензии приводит к экстренному завершению работы программы или к возможному выбрасыванию соответствующего исключения (только для программ .NET).

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

Настройка Блокировка сообщений (задается на проект) позволяет избежать вывода сообщения об ошибки.

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

Алгоритм обработки ошибок зависит от:

  • настроек, указанных в проекте защиты;
  • разновидности защищаемых файлов программ;
  • достигнутого типа точки проверки лицензии.

и имеет следующий вид:

  1. Проверка отключения настройки Блокировка сообщений.
    Если эта настройка отключена, до тех пор пока подходящая лицензия не найдена, пользователю выводится сообщение, в котором предлагается повторить попытку поиска лицензии или отменить ее поиск. 
    Если при повторной попытке подходящая лицензия была найдена, то приложение продолжает свою работу.
    Если пользователь выбрал отмену поиска или настройка Блокировка сообщений включена, переход к п.2.
  2. Проверка включения настройки Проброс исключений (только для программ .NET).
    Если эта настройка включена и при этом ошибка возникает либо при запросе защищенного артефакта, либо в файле библиотеки, то выбрасывается соответствующее исключение.
    В противном случае, переход к п.3.
  3. Если выполняется защита файла библиотеки и при этом ошибка возникает при запуске в файле библиотеки, то происходит возврат из функции, а программа продолжает работать, словно библиотеку не удалось загрузить. Для библиотеки, загружаемой как зависимость, это обычно приводит к экстренному завершению работы программы.
    В противном случае, переход к п.4.
  4. Экстренное завершение работы программы.

Алгоритм обработки ошибок для файлов приложений-сервисов Windows

При защите файла приложения-службы Windows необходимо соблюдать следующие условия:

  • падение службы недопустимо;
  • разрешено ожидание подходящего ключа;
  • нежелателен вывод окон с сообщениями.

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

  1. Проверка отключения настройки Блокировка сообщений.
    Если эта настройка отключена, то в раздел Приложение Журнала событий Windows записывается новое событие от имени защищенного приложения-сервиса.
    В противном случае, переход к п.2.
  2. Проверка включения настройки Проброс исключений (только для программ .NET).
    Если эта настройка включена и при этом ошибка возникает при запросе защищенного артефакта, то выбрасывается соответствующее исключение.
    В противном случае, переход к п.3.
  3. Проверка отключения настройки Блокировка сообщений.
    Если эта настройка отключена, то, до тех пор пока подходящая лицензия не будет найдена или служба не будет остановлена, приложение переходит в цикл бесконечного ожидания подходящей лицензии с фиксированным интервалом проверки 3 секунды. 
    В противном случае, переход к п.4.
  4. Экстренное завершение работы программы.
  • No labels