Думаю, что защиты никогда не бывает мало
Поэтому решил попробовать защитить свою программу (х32) с помощью VMProtect и Armadillo.
Т.е. обрабатываю сначала в VMProtect, затем в Armadillo
Столкнулся сразу с проблемами. Включение/выключение трех режимов защиты кода в Арме приводит к разным результатам:
Strategic Code Splicing - при включении параметра защищаемая программа вылетает, но видно что при старте отрабатывает код, не обработанный VMProtect
Import Table Elimination - при включении параметра защищаемая программа не работает - сразу вылетает.
Memory Patching Protection - при включении параметра защищаемая программа нормально работает.
В принципе, если не использовать первые два указанные мною параметра, то программа, защищенная VMProtect + Armadillo нормально работает.
Кто нибудь сталкивался с подобными проблемами?
Может есть какие то рекомендации по настройкам Армадиллы?
Или у кого нить есть опыт использования других протекторов?
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 и на втором этапе все остальные.
Очень простой… куча пользователей получивших ключи сгенеренные им. + Отсутствие механизмов генерации ключей, реализации триальности в вашем продукте. (Не вижу смысла в лишних телодвижениях 1 словом.)
Если использовать ASProtect только в качестве системы лицензирования, то я вижу следующий алгоритм работы:
Накрываете программу ASProtect (с полностью отключенными “Protection Options” + “Compression Option”=“Without Compression”)
Сверху накрываете VMProtect с любыми опциями на выбор (также можно накрыть любой код в самой программе, там где не используются макросы “encrypted sections”).
С версии 1.8 мы не рекоменудем использовать пакеры/протекторы после защиты файла с помощью VMProtect, т.к. большинство инструментов не поддерживают некоторые особенности реализации PE формата и как следствие после их использования упакованные файлы перестают нормально функционировать.
Для упаковки мы рекомендуем использовать встроенный упаковщик, для использования которого на закладке “Опции” достаточно включить опцию “Упаковать выходной файл”. В версии 1.81 появится новый режим упаковки с более высокой степенью сжатия.
Ну что за люди.. Упаковать я и UPX могу.. Вопрос в том что в вашей защите все еще отсутствует маханизм триальности и генерации/проверки ключей. А не в том чтобы паковать чем-то.
Основная цель последнего поста - это предупредить пользователей, что у них могут быть проблемы при использовании упаковщиков после VMProtect 1.8. Вопрос лицензирования вообще не затрагивался )