Задать вопрос
@ulysses1

GAS ассемблер: записать в секцию опкоды, затем выполнить их?

Есть Linux и стандартный GNU ассемблер.
Можно ли взять какую нибудь из секций, заполнить ее опкодами, а затем прыгнуть в нее для выполнения?
Я умею только выделять память системным вызовом mmap, туда заполнять и потом это выполнять.
Можно ли это делать без системных вызовов как то.
Например, как либо писать в секцию .text или как то поставить разрешение для секции .data, что бы можно было ее выполнять.
  • Вопрос задан
  • 51 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
includedlibrary
@includedlibrary
Да, можно. Вам надо найти заголовок программы PHDR, в котором располагается секция .text, и установить ему права на запись. Можно этого же добиться при линковке, с помощью скрипта компановщика:

PHDRS {
    text PT_LOAD FLAGS(0x7);
}

SECTIONS {
    .text ALIGN (0x1000) : {
        *(.text)
    } :text
}


Так же можно добиться того же при помощи системного вызова mprotect из уже запущенной программы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы