LINUX.ORG.RU
это можно сделать с помощью write(), для этого
нужно только знать смещение. mmap не сработает,
хотя (если я правильно понимаю последние изменения)
в 2.6.15 можно будет и через mmap достать.

но есть масса проблем. например, ядро не будет знать,
что страница изменилась, поэтому она в любой момент
может быть отброшена, и затем заново считана из exe
файла.

я думаю, вам нужен ptrace.
idle ★★★★★
()
Ответ на: комментарий от idle
Именно в секцию кода - не данных? (я просто уточняю, может, вопрос был не совсем ясно сформулирован ? )
anonymous
()
Ответ на: комментарий от anonymous
> Именно в секцию кода - не данных?

а какая ему, /dev/mem'му разница? конечно, вам нужно сбросить
i-cache, но это все равно мало чем поможет, если вы не останавливаете
процесс.

повторяю, что возможность это скорее теоретическая. у вас нет
простого способа найти нужный offset, у вас нет возможности
изменять код, если процесс еще не исполнял его (не было page
fault), миллион других проблем.

ptrace вам нужен.

если не секрет, зачем вам это? и почему смущает запись именно
в код?
idle ★★★★★
()
Ответ на: комментарий от idle
Вопрос чисто теоретического плана (но возможно - как исследование - попробую реализовать практически). Смущает именно по поводу кода, что в статье:

Design elements of the FreeBSD VM system Matthew Dillon

сказано: Program code and program data are effectively a single memory-mapped file (the binary file being run), but program code is read-only while program data is copy-on-write.

Вот потому и спросил.

anonymous
()
Ответ на: комментарий от anonymous
> but program code is read-only

конечно, он read-only, но только с точки зрения
самого процесса. с точки зрения ядра (точнее, c
точки зрения init_task->active_mm) очень даже RW.
idle ★★★★★
()
Ответ на: комментарий от idle
Спасибо. Теперь все прояснилось. :-)
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.