开发者社区> 韩曙亮> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

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

文章目录

一、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 函数 )
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )
40 0
【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★(一)
【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★(一)
32 0
【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
54 0
【Android 逆向】Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )
【Android 逆向】Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )
26 0
【Android 逆向】Android 进程注入工具开发 ( EIP 寄存器指向 dlopen 函数 | ESP 寄存器指向栈内存 | 调试程序收回目标进程控制权 )
【Android 逆向】Android 进程注入工具开发 ( EIP 寄存器指向 dlopen 函数 | ESP 寄存器指向栈内存 | 调试程序收回目标进程控制权 )
35 0
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(二)
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(二)
33 0
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(一)
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(一)
22 0
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具的 main 函数分析 )
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具的 main 函数分析 )
33 0
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )
48 0
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )
131 0
+关注
韩曙亮
专注 Android 领域
2601
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载