VMProtect и протекторы/упаковщики

Добрый день.

Думаю, что защиты никогда не бывает мало :slight_smile:
Поэтому решил попробовать защитить свою программу (х32) с помощью VMProtect и Armadillo.
Т.е. обрабатываю сначала в VMProtect, затем в Armadillo
Столкнулся сразу с проблемами. Включение/выключение трех режимов защиты кода в Арме приводит к разным результатам:

  • Strategic Code Splicing - при включении параметра защищаемая программа вылетает, но видно что при старте отрабатывает код, не обработанный VMProtect
  • Import Table Elimination - при включении параметра защищаемая программа не работает - сразу вылетает.
  • Memory Patching Protection - при включении параметра защищаемая программа нормально работает.

В принципе, если не использовать первые два указанные мною параметра, то программа, защищенная VMProtect + Armadillo нормально работает.

Кто нибудь сталкивался с подобными проблемами?
Может есть какие то рекомендации по настройкам Армадиллы?
Или у кого нить есть опыт использования других протекторов?

Надеюсь на обмен опытом в данном вопросе :slight_smile:

  • Import Table Elimination - при включении параметра защищаемая программа не работает - сразу вылетает.

При включении данной опции Armadillo ищет все ссылки на IAT и по всем найденным местам изменяет указатели на “новую” IAT, которая находится в другом месте. Соотвественно Armadillo не может найти и “исправить” все ссылки на IAT из p-code ВМ и поэтому в p-code остаются указатели на “старую” IAT вследствии чего программа при выполнении такого кода будет вылетать. Поэтому рекомендуется отключать данную опцию при обработке Armadillo после VMProtect.

Также в Armadillo есть возможность отмечать блоки кода как SecureSection. В данном случае нужно учитывать следующую особенность VMProtect-а: место из под защищенных участков кода VMProtect использует под хранение блоков кода от разных процедур и исполнителя ВМ и если вы при работе в VMProtect в список обрабатываемых процедур включите процедуры с “типом” SecureSection и NonSecureSection, то на месте SecureSection у вас могут присутсвовать участки от NonSecureSection и наоборот и в результате такого “винегрета” программа скорее всего работать не будет. При применении SecureSection рекомендуется использовать VMProtect в 2 этапа - сначала обрабатывать только процедуры помеченнные SecureSection и на втором этапе все остальные.

P.S. В версии 1.6. добавлена возможность упаковки выходного файла

А можно коротенькую инструкцию как совместить ASProtect SKE 2.4 и ваш продукт ?

А какой смысл вообще использовать ASProtect? :slight_smile:)

Очень простой… куча пользователей получивших ключи сгенеренные им. + Отсутствие механизмов генерации ключей, реализации триальности в вашем продукте. (Не вижу смысла в лишних телодвижениях 1 словом.)

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

  1. Накрываете программу ASProtect (с полностью отключенными “Protection Options” + “Compression Option”=“Without Compression”)
  2. Сверху накрываете VMProtect с любыми опциями на выбор (также можно накрыть любой код в самой программе, там где не используются макросы “encrypted sections”).
  • что-то я не вижу в нем возможности отключения сжатия.. :unamused:

По всей видимости действительно “Without Compression” всегда недоступна.

С версии 1.8 мы не рекоменудем использовать пакеры/протекторы после защиты файла с помощью VMProtect, т.к. большинство инструментов не поддерживают некоторые особенности реализации PE формата и как следствие после их использования упакованные файлы перестают нормально функционировать.
Для упаковки мы рекомендуем использовать встроенный упаковщик, для использования которого на закладке “Опции” достаточно включить опцию “Упаковать выходной файл”. В версии 1.81 появится новый режим упаковки с более высокой степенью сжатия.

Ну что за люди.. :slight_smile: Упаковать я и UPX могу.. Вопрос в том что в вашей защите все еще отсутствует маханизм триальности и генерации/проверки ключей. А не в том чтобы паковать чем-то.

Основная цель последнего поста - это предупредить пользователей, что у них могут быть проблемы при использовании упаковщиков после VMProtect 1.8. Вопрос лицензирования вообще не затрагивался :slight_smile:)