文章目录

  • 一、mmap 简介
  • 二、mmap 函数作用

一、mmap 简介


mmap 函数的作用是 将 文件 映射到 内存中 , 映射的单位必须是 PAGE_SIZE ;

mmap 函数引入头文件 :

<sys/mman.h>

mmap 函数原型 :

<sys/mman.h>
void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset);
int munmap(void* start,size_t length);

mmap 函数参数 :

  • void* start : 如果为 0 就是让系统自动分配 , 如果不为 0 , 则由用户指定分配的地址 ;
  • size_t length : 申请分配内存的大小 ;
  • int prot : 内存保护标志 , 如 PROT_READ | PROT_WRITE | PROT_EXEC , 表示 可读 | 可写 | 可执行 ;
  • int flags : 映射对象类型标志位标志位 , 如 MAP_ANONYMOUS | MAP_PRIVATE , 表示 匿名 | 私有 ;
  • int fd : 文件描述符 ; 没有设置为 0 ;
  • off_t offset : 被映射对象的起点偏移量 , 一般设置 0 ;

二、mmap 函数作用


mmap 函数作用 : mmap 本质是内存映射 , 用途如下 ;

① 大文件读写 : 大文件读写 时 , 可以 将文件映射到内存中 ;

② 内存分配 : 一般在用户层使用 malloc 函数即可 , 不常用 ;

③ 修改内存 : 当以 匿名/私有 的方式 分配 可读/可写/可执行 的内存时 , 指定第一个 addr 地址参数 , 系统分配该地址处的内存 , 可以用于 修改当前内存的值

malloc 申请内存 : 使用 malloc 也可以申请内存 , malloc 底层也是调用的 mmap 系统调用方法申请的内存 ;

① 普通应用 : malloc 中在调用 mmap 系统调用之前 , 执行了大量的指令操作 ; 如果在普通应用中 , 这是没有问题的 ;

② 逆向工具应用 : 但是逆向的场景中 , 动态库是侵入目标进程的 , 第一个侵入的动态库 , 风险很大 , 会破坏目标进程内存结构 , 因此加载的指令尽量少 , 这里直接使用系统调用 , 简洁高效安全 ;

在注入进程的动态库中 , 指令越复杂 , 越容易出错 ;

【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 一 | mmap 函数简介 )相关推荐

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

    文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...

  2. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )

    文章目录 一.准备 mmap 函数的参数 二.mmap 函数远程调用 一.准备 mmap 函数的参数 上一篇博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 远程调 ...

  3. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入的 libbridge.so 动态库中的 load 函数地址 并 通过 远程调用 执行该函数 )

    文章目录 一.dlsym 函数简介 二.获取 目标进程 linker 中的 dlsym 函数地址 三.远程调用 目标进程 linker 中的 dlsym 函数 获取 注入的 libbridge.so ...

  4. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 linker 中的 dlopen 函数地址 并 通过 远程调用 执行该函数 )

    文章目录 一.dlopen 函数简介 二.获取 目标进程 linker 中的 dlopen 函数地址 三.远程调用 目标进程 linker 中的 dlopen 函数 一.dlopen 函数简介 dlo ...

  5. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具收尾操作 | 关闭注入的动态库 | 恢复寄存器 | 脱离远程调试附着 )

    文章目录 一.dlclose 函数简介 二.关闭注入的 libbridge.so 动态库 三.恢复寄存器 四.脱离远程调试附着 一.dlclose 函数简介 dlclose 函数的作用是 卸载一个 指 ...

  6. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )

    文章目录 一.调试进程 ATTACH 附着目标进程 二.读取目标函数寄存器值并存档 1.主要操作流程 2.ptrace 函数 PTRACE_GETREGS 读取寄存器值 一.调试进程 ATTACH 附 ...

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

    文章目录 一.获取 远程 目标进程 中的 /system/lib/libc.so 动态库中的 mmap 函数地址 二.从 /proc/pid/maps 文件中获取 指定 进程 中的 /system/l ...

  8. python执行系统命令后获取返回值的几种方式集合

    第一种情况 os.system('ps aux') 执行系统命令,没有返回值 第二种情况 result = os.popen('ps aux') res = result.read() for lin ...

  9. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具的 main 函数分析 )

    文章目录 一.注入流程 二.注入工具的 main 函数分析 一.注入流程 开始分析 [Android 逆向]Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 ...

最新文章

  1. 天涯htmlcss基础框架
  2. 网络对抗技术 实验报告 三
  3. mysql字段说明_mysql 字段类型说明
  4. c++怎么输入带有空格的字符串_杭电OJ 字符串处理类部分题解
  5. Rabbit的工作(2)
  6. 混合多云每个人都应避免的3个陷阱(第2部分)
  7. Linxu 学习记录
  8. startx启动过程分析
  9. 报告:代币化资产市值已超200亿美元
  10. B3403 [Usaco2009 Open]Cow Line 直线上的牛 deque
  11. POJ3750 小孩报数问题【模拟】
  12. [轉]PHP执行MYSQL存储过程报错:Commands out of sync; you can't run this command now 问题的解决...
  13. 数据集:各地区化妆品销量、人口数量和人均收入
  14. html请求接口_Python 如何使用 HttpRunner 做接口自动化测试
  15. visio绘图与processon绘图比较
  16. 工业锅炉计算机控制系统框图,计算机控制系统实例..doc
  17. 初步使用ligerui
  18. 【刷机】小米降级刷机 线刷 图解 MIUI降级刷机
  19. 我用分析了42万字的歌词,为了搞清楚民谣歌手们在唱些什么
  20. [OfficeExcel] OfficeExcel2010 第20-22讲 Excel图表

热门文章

  1. 《高性能网站建设指南》学习笔记
  2. oracle启动服务和监听命令
  3. MD5加密算法的一些知识
  4. Python机器学习基础教程-第2章-监督学习之K近邻
  5. 实现二叉树的先序遍历、中序遍历、后序遍历
  6. javaweb回顾第十二篇监听器
  7. 网易笔试——混合颜料
  8. SQL SERVER 数据库清空语句 忽略外键 触发器 等
  9. 在Itanium2、Intel Fortran Compiler上安装VASP4.6
  10. 《当程序员的那些狗日日子》(十二)公司里的靓丽风景