mprotect 函数用法

Posted ims-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mprotect 函数用法相关的知识,希望对你有一定的参考价值。

目录

1

在Linux中,mprotect()函数可以用来修改一段指定内存区域的保护属性。
函数原型如下:

#include <unistd.h>
#include <sys/mmap.h>
int mprotect(const void *start, size_t len, int prot);

mprotect()函数把自start开始的、长度为len的内存区的保护属性修改为prot指定的值。

prot可以取以下几个值,并且可以用“|”将几个属性合起来使用:

1)PROT_READ:表示内存段内的内容可写;

2)PROT_WRITE:表示内存段内的内容可读;

3)PROT_EXEC:表示内存段中的内容可执行;

4)PROT_NONE:表示内存段中的内容根本没法访问。

需要指出的是,指定的内存区间必须包含整个内存页(4K)。区间开始的地址start必须是一个内存页的起始地址,并且区间长度len必须是页大小的整数倍。

如果执行成功,则返回0;如果执行失败,则返回-1,并且设置errno变量,说明具体因为什么原因造成调用失败。错误的原因主要有以下几个:


以上是关于mprotect 函数用法的主要内容,如果未能解决你的问题,请参考以下文章

内存越界定位mprotect

多线程内存问题分析之mprotect方法

Android加壳过程中mprotect调用失败的原因及解决方案

Android加壳过程中mprotect调用失败的原因及解决方案

Linux 内核 内存管理内存管理系统调用 ① ( mmap 创建内存映射 | munmap 删除内存映射 | mprotect 设置虚拟内存区域访问权限 )

c_cpp 加载源图像固定用法(代码片段,不全)