LINUX.ORG.RU

Возможна ли запись в бинарники и библиотеки со стороны процесса?


0

0

Некоторые части бинарников ммапятся в адресное пространство процесса с правом на запись. Например:

di@suse:~> sudo cat /proc/1/maps
08048000-08050000 r-xp 00000000 08:04 524668     /sbin/init
08050000-08051000 r--p 00007000 08:04 524668     /sbin/init
08051000-08052000 rw-p 00008000 08:04 524668     /sbin/init
...............
di@suse:~> readelf -S /sbin/init
...............
  [25] .got.plt          PROGBITS        08050ff4 007ff4 000194 04  WA  0   0  4
...............
di@suse:~>

Если init вдруг станет писать что-то в область 08051000-08052000, не будет ли это влиять на содержимое файла /sbin/init? Вопрос касается и библиотек, так как у каждой из них тоже есть небольшая область с флагом «w».

Deleted

Я полагаю, что нет. Данные копируются с носителя в ОЗУ, а обратно - нет.

bk_ ★★ ()

В теории может. Практически - смотреть флаги при вызове mmap, PROT_WRITE + MAP_SHARED могут дать неприятный эффект.

no-dashi ★★★★★ ()
Ответ на: комментарий от anonymous

присоединяюсь. Скорее всего, это статически распределенные ресурсы программы (текстовые и числовые константы), aka сегмент данных.

annoynimous ★★★★★ ()

> Некоторые части бинарников ммапятся в адресное пространство

процесса с правом на запись.



08051000-08052000 rw-p 00008000 08:04 524668 /sbin/init



там P стоит, те MAP_PRIVATE.

писать туда процесс может, но изменения остануться в памяти,
и будут видны только самому init'у.

скорее всего в этом rw сегменте эти, как их, забыл... ну,
туда пишутся фактические адреса символов из libc.so

idle ★★★★★ ()
Ответ на: комментарий от idle

idle:

Я уже сам разобрался, но тем не менее, спасибо огромное! Ваш ответ в точности совпал с моими выводами.

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