Для моего университетского проекта мне нужно ЗАПИСАТЬ защитить все адресное пространство процесса. Я читал файл /proc/self/maps и анализировал сопоставление.
Итак, для каждой записи в формате 08048000-0804c000 r-xp 00000000 08:03 7971106 /bin/cat
я читаю первые две записи (здесь 08048000 & 0804c000
), преобразовывая их в десятичные числа. Предположим, что десятичный эквивалент равен A и B соответственно. Затем я делаю mprotect((int*)A, B-A, PROT_READ)
. Но этот подход дает мне ошибку сегментации. Я не могу понять, что я сделал неправильно здесь. Может быть, у меня есть пробел в знаниях, который вызывает проблему. Кто-то может дать мне несколько предложений?