Возможно ли сжатие шаблонов на уровне инструкций с расширением среды выполнения на основе SIGILL в современных системах Linux

Ответить
Anonymous
 Возможно ли сжатие шаблонов на уровне инструкций с расширением среды выполнения на основе SIGILL в современных системах

Сообщение Anonymous »

При работе с очень маленькими или ограниченными по размеру двоичными файлами ELF (статическими или преимущественно статическими)
я исследую, возможно ли технически сжимать последовательности повторяющихся инструкций
после ссылки, а не сжимать двоичные файлы как данные.
Идея примерно такова:
1. Выполните статический анализ полностью связанного двоичного файла ELF.
2. Обнаружение часто повторяющихся последовательностей инструкций (например, прологи/эпилоги функций,
общие последовательности ADRP+LDR+ADD в AArch64, блоки обработки ошибок и т. д.).
3. Замените каждое появление такой последовательности однобайтовой недопустимой инструкцией
(выбранной для надежного запуска SIGILL).
4. Встройте небольшой словарь, сопоставляющий эти коды операций с исходными последовательностями инструкций.
5. Во время выполнения установите обработчик SIGILL, который:
  • идентифицирует код операции,
  • выполняет или эмулирует исходную последовательность инструкций,
  • возобновляет выполнение после замененного сайта.
Это намеренное переписывание после ссылки, не является оптимизацией компилятора и отличается от
универсальных упаковщиков (UPX и т. д.) тем, что:
- сжимаются только последовательности инструкций,
- не происходит полной двоичной распаковки,
- распаковка осуществляется по требованию во время выполнения.
Мои конкретные вопросы:
• Существует ли архитектурный уровень или уровень ABI причины (Linux ELF, x86_64 / ARM), почему этот подход
будет принципиально небезопасным или ненадежным?
• Используются ли шаблоны расширения/эмуляции инструкций на основе SIGILL в производственных системах
(за пределами эмуляции функций ЦП) и каковы известные подводные камни?
• Будут ли предположения об инструментах (отладчики, загрузчики, размотка, сигналы, W^X и т. д.)
сделают это непрактичным, даже если это технически возможно?
• Существуют ли существующие инструменты или исследовательские проекты, которые уже исследовали эту идею в
контексте после ссылки?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ansion-via
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»