Несколько запротектированных плагинов

Есть стороннее приложение-сервер, запускаемое в системе как служба.
Я использую VMProtect для защиты разрабатываемых мной dll-плагинов.
Проблема: когда служба использует > 1 запротектированного плагина, то при ручной остановке службы через стандартный Services всплывает ошибка:

Windows could not stop the service on local computer.
Error 1067 the process terminated unexpectedly

Если работает только 1 запротектированный плагин, то служба останавливается нормально.

С чем это может быть связано и как решить данную проблему?

Нужно разбираться в отладчике.

Access violation возникал в секциях vmp в стеке после вызова FreeLibrary.
Выяснилось, что при отключении в опциях “защиты памяти” аварийной остановки службы не наблюдается, тем не менее процесс выгрузки dll занимает достаточно много времени (~30 сек).
Также интересный момент, что при отключении защиты памяти размер файла уменьшается с 3.3 Мб до 1.7Мб - почему защита памяти требует таких ресурсов?

Много ли теряется в отношении протекции при отключении данной опции?

Что делает защита памяти:

  1. При старте проверяет целостность файла на диске.
  2. При старте проверяет целостность ReanOnly сегментов образа в памяти.
  3. При работе завиртуализированного кода проверяет случайные участки кода, которые получились в результате защиты программы (пользовательские функции с типами мутация/виртуализация + код VMP рантайма)

Размер таблицы хешей для п. 3 самый большой, т.к. размеры регионов там ограничены в 4К для обеспечения приемлимой скорости.

Дополнительно на размер защищенного файла влияет наличие VMP рантайма (VMProtect добавляет свой собственный код если программа использует функции из SDK/опции “Защита памяти”, “Защита ресурсов” и в меньшей степени “Упаковка файла”).

Access violation возникал в секциях vmp в стеке после вызова FreeLibrary.
Выяснилось, что при отключении в опциях “защиты памяти” аварийной остановки службы не наблюдается

Исправленная версия (619 билд) выслана на емаил, указанный при покупке