это можно сделать с помощью write(), для этого
нужно только знать смещение. mmap не сработает,
хотя (если я правильно понимаю последние изменения)
в 2.6.15 можно будет и через mmap достать.
но есть масса проблем. например, ядро не будет знать,
что страница изменилась, поэтому она в любой момент
может быть отброшена, и затем заново считана из exe
файла.
я думаю, вам нужен ptrace.
> Именно в секцию кода - не данных?
а какая ему, /dev/mem'му разница? конечно, вам нужно сбросить
i-cache, но это все равно мало чем поможет, если вы не останавливаете
процесс.
повторяю, что возможность это скорее теоретическая. у вас нет
простого способа найти нужный offset, у вас нет возможности
изменять код, если процесс еще не исполнял его (не было page
fault), миллион других проблем.
ptrace вам нужен.
если не секрет, зачем вам это? и почему смущает запись именно
в код?
Вопрос чисто теоретического плана (но возможно - как исследование - попробую реализовать практически). Смущает именно по поводу кода, что в статье:
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.
> but program code is read-only
конечно, он read-only, но только с точки зрения
самого процесса. с точки зрения ядра (точнее, c
точки зрения init_task->active_mm) очень даже RW.