Добрый вечер.
Мы используем VMProtect 3.8.0 под Linux.
У проекта в опциях есть защита памяти, которая защищает и память, и файл на диске. Возможно ли отключить контроль целостности файла на диске и оставить включённой защиту памяти?
Нужно это в связи с тем, что мы дописываем в elf файл дополнительные секции, что приводит к срабатыванию контроля целостности.
Вы являетесь зарегистрированным пользователем VMProtect?
Да, он у нас приобретён на компанию, где я работаю.
Вы планируете подписывать файл с помощью bsign?
Да, мы планируем использовать bsign, плюс у нас есть своя утилита, которая прописывает информацию о версии файла и продукте в секции note. Секции наша утилита добавляет с использованием утилиты objcopy из binutils. Проблема при подписывании и нашей утилиты и bsign одинаковая - нарушается контроль целостности. Свою утилиту мы допилим при необходимости, нужно только понимать, как можно решить проблему. Если это можно сделать без снижения уровня защиты, то вообще отлично.
Можно убрать из контроля целостности все поля, которые относятся к ELF секциям в Elf_Ehdr: e_shoff, e_shentsize, e_shnum, e_shstrndx. Такой вариант устроит?
Если после этого у нас всё заработает, то конечно устроит. Надо попробовать. Что для этого нужно сделать?
С bsign мы разобрались, почитал тему здесь о проблемах с bsign для подписей под АстраЛинукс. Вариант с двойной подписью до и после перемешивания у нас сработал. Но осталась проблема с нашей утилитой.
Поэтому вариант с убиранием из контроля целостности полей, относящихся к ELF секциям по прежнему актуален.
Как это сделать?
С нашими дописываемыми секциями с данными о ревизии мы разобрались - VMProtect удаляет секции .note, но если создать секцию с другим кастомным именем (например .revision), то всё нормально, эти секции не удаляются/
А вот при подписи обработанных VMProtect’ом файлов в АстраЛинукс с помощью bsign у нас возникла проблема: при двойном подписывании до и после обработки VMProtect’ом исполняемого файла всё хорошо, а вот при загрузке обработанной таким образом библиотеки (.so) срабатывает защита целостности файла.
Может ли это быть ошибка в VMProtect или какая-то особенность обработки им библиотек?