LINUX.ORG.RU

NASM возможноли сделать секцию текст записываемой или дата исполняемой?

 


1

2

Интересует наличие в NASM аналога section ‘.data’ readable writeable executable Или для текст. Для самопрограммирующегося кода. Тоесть нужна возможность коду программировать самого себя. Есно под Линюкс в х64 режиме.



Последнее исправление: roooot (всего исправлений: 1)

Ответ на: комментарий от anonymous

там описаны сегменты текст дата бсс и риддата. все стандартно. текст -rx остальные -rw. на fasm есть инструкция описанная выше переводящая сегмент (секцию) в -rwx. есть ли такая инструкция под NASM там ни слова

roooot
() автор топика

man mprotect

anonymous
()
Ответ на: комментарий от sparks

The defaults assumed by NASM if you do not specify the above qualifiers are:

section .text progbits alloc exec nowrite align=16

это констатация факта. везде по умолчанию текст такой -rx как сделать .text write. тупо SECTION .text write ни чего не дает все компелится и приводит к ошибке сегментирования

roooot
() автор топика
Ответ на: комментарий от EXL

интересная тема. тем более что я линкую как раз гнусом. надо будет обмозговать в этом направлени. хотя напоминает почесывание за правым ухом левой ногой.

roooot
() автор топика
Ответ на: комментарий от roooot

ммм, несовсем понятно зачем ты cc используешь для линковки, попробуй добавить -N или используй ld если в твоём cc нет этого ключа

  -N
   --omagic
       Set the text and data sections to be readable and writable.  Also, do not page-align
       the data segment, and disable linking against shared libraries.  If the output format
       supports Unix style magic numbers, mark the output as "OMAGIC". Note: Although a
       writable text section is allowed for PE-COFF targets, it does not conform to the
       format specification published by Microsoft.

   --no-omagic
       This option negates most of the effects of the -N option.  It sets the text section to
       be read-only, and forces the data segment to be page-aligned.  Note - this option does
       not enable linking against shared libraries.  Use -Bdynamic for this.
sparks ★★★★
()
Последнее исправление: sparks (всего исправлений: 1)
Ответ на: комментарий от sparks

Спасибо, в лд работает. проверил правда на эльф32. сс используючтоб не мучаться на начальном этапе. юзаю работу со строками из либси

roooot
() автор топика

Спасибо, вопрос частично решен

Проверена на работоспособность в ELF32. SECTION .text write в NASM делает файл .o в которором секция .text не имеет флага NOWRITE. Последующая линковка ld -N (именно с ключем этим) сохраняет секцию записываемой. Ошибок сегментации во время выполнения при записи в секцию с кодом нет. Остался нерешенным вопрос с линковкой gcc , но это по моему уже глава другой песни.

roooot
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.