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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.