mmap函数

Posted

tags:

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

1、mmap系统调用

通过man手册可以看出:

1 void *mmap(void *addr, size_t length, int prot, int flags,
2                   int fd, off_t offset);

 

功能:负责把文件内容映射到进程的虚拟地址空间,通过对这段内存的读取和修改来实现对文件的读取和修改,而不需要再调用read和write;

参数:

addr:映射的起始地址,设为NULL由系统指定;
len:映射到内存的文件长度;
prot:期望的内存保护标志,不能与文件的打开模式冲突。PROT_EXEC,PROT_READ,PROT_WRITE等;
flags:指定映射对象的类型,映射选项和映射页是否可以共享。MAP_SHARED,MAP_PRIVATE等;
fd:由open返回的文件描述符,代表要映射的文件;
offset:开始映射的文件的偏移。
返回值:成功执行时,mmap()返回被映射区的指针。失败时,mmap()返回MAP_FAILED。

 

mmap映射图:

 技术分享

 

 

2.解除映射:

1 int munmap(void *addr, size_t length);

 

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

代码片段 - Golang 实现集合操作

Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )(代

Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 /system/lib/libc.so 动态库中的 mmap 函数地址 )

使用片段的谷歌地图

Linux 内核 内存管理内存管理系统调用 ④ ( 代码示例 | mmap 创建内存映射 | munmap 删除内存映射 )

Linux 内核 内存管理mmap 系统调用源码分析 ④ ( do_mmap 函数执行流程 | do_mmap 函数源码 )