对于我的大学项目,我需要 WRITE 保护进程的整个地址空间。我正在阅读/proc/self/maps文件并解析映射。
因此,对于格式的每个条目08048000-0804c000 r-xp 00000000 08:03 7971106 /bin/cat
,我正在阅读前两个条目(此处08048000 & 0804c000
),将它们转换为十进制。让我们假设十进制等价物分别是A和B。然后我做mprotect((int*)A, B-A, PROT_READ)
。但是这种方法给了我分段错误。我无法找出我在这里做错了什么。可能是我在这里有一些知识差距导致了问题。有人可以给我一些建议吗?