dlopen android 权限,Android7.0对dlopen的改变——读取私有.so结果变化
两个内存段
在同一个进程空间中dlopen一个.so文件,理论上在内存中是同一片区域,但实际调试中发现Android7.0(read "/proc/self/maps")中,先后读同一个.so内存中居然出现两个段!
这在低版本Android(比如4.x)中不曾出现。
如下一些blog中分析,与Android7.0对dlopen的改写有关,可能是不同命名空间下读取结果不一样,可能是对安全性的提升。
NDK 应用链接至平台库
7.0对已加载.so的引用/Hook
由于以上分析,自己的代码中dlopen的.so文件与目标程序中加载的.so在不同内存段中,故不能直接Hook,要想方法拿到目标程序加载的.so的内存地址。
可以用base_addr + offset得到目标方法的地址,base_addr通过查找 “/proc/self/maps” 得到
//这个方法来自 android inject 用于获取地址
void* get_module_base(int pid, const char* module_name)
{
FILE *fp;
long addr = 0;
char *pch;
char filename[32];
char line[1024];
if (pid < 0) {
/* self process */
snprintf(filename, sizeof(filename), "/proc/self/maps", pid);
}
else {
snprintf(filename, sizeof(filename), "/proc/%d/maps", pid);
}
fp = fopen(filename, "r");
if (fp != NULL) {
while (fgets(line, sizeof(line), fp)) {
if (strstr(line, module_name)) {
pch = strtok(line, "-");
addr = strtoul(pch, NULL, 16);
if (addr == 0x8000)
addr = 0;
break;
}
}
fclose(fp);
}
return (void *)addr;
}
参考blog:
dlopen android 权限,Android7.0对dlopen的改变——读取私有.so结果变化相关推荐
- android dlopen一个so,Android7.0对dlopen的改变
两个内存段 在同一个进程空间中dlopen一个.so文件,理论上在内存中是同一片区域,但实际调试中发现Android7.0(read "/proc/self/maps")中,先后读 ...
- android 禁用dlsym_Android7.0对dlopen的改变——读取私有.so结果变化
两个内存段 在同一个进程空间中dlopen一个.so文件,理论上在内存中是同一片区域,但实际调试中发现Android7.0(read "/proc/self/maps")中,先后读 ...
- android7dlopen,Android7.0对dlopen的改变
两个内存段 在同一个进程空间中dlopen一个.so文件,理论上在内存中是同一片区域,但实际调试中发现Android7.0(read "/proc/self/maps")中,先后读 ...
- 【Android】Android7.0和Android2.1源生代码目录及框架分析
Android源代码结构: Android7.0整体结构 各个版本的源码目录基本类似,编译后的源码目录会生成out文件夹,用来存储编译产生的文件(例如.img等文件). Android7.0的根目录结 ...
- Android9.0 代码注入,[原创]Android9.0 hook dlopen问题/如何hook dlopen相关函数
Android9.0中在activity的onCreate之前hook dlopen函数,如果需要返回值(即修改了LR寄存器),那么会触发:E/libEGL: EGL_ANDROID_blob_cac ...
- Android踩坑日记:android7.0动态相机权限
前提: 项目中使用的动态权限开源库github:https://github.com/yanzhenjie/AndPermission. 转载必须注明本文转自严振杰的博客:http://blog.cs ...
- Android 一行代码搞定将错误日志放入到sd卡中且不需要任何权限,适配到android7.0
Android 一行代码搞定将错误日志放入到sd卡中且不需要任何权限,适配到android7.0 之前所有的项目都有一个将崩溃日志写入到sd卡的工具类,然后每次项目新建都从老项目copy过来,后来慢慢 ...
- android 7.0权限组,huawei p9 plus(VIE-AL10)Android7.0/EMUI5.0更新动态交流
现在的版本概述: Android6.0: EMUI4.1,b195 EMUI4.1,b198(测试版) Android7.0: EMUI5.0:b198(体验用户及内测可获取) ...... 请各位内 ...
- 嵌入式Linux支持dlopen,Android下使用dlopen函数动态调用.so链接库
在这篇文章([09.03.25]Linux环境中dlopen函数的简单应用)中.实现了在UBUNTU LINUX环境下使用dlopen函数动态调用.so链接库.但是也提到了在Android下未能成功. ...
最新文章
- 字符串string和内存流MemoryStream及比特数组byte[]互转
- 前端学习(731):函数的使用
- java 数组 equals_java中用equals比较两个内容相同的字符数组
- 百度java的线程技术_自我提升(基础技术篇)——java线程简介
- linux perl 安装目录,linux-将Perl模块安装到特定位置
- PC介绍之PCIE、总线、内存、电源
- 对正则表达式又重新学了一遍,笔记方便以后查阅
- “产学合作勇创新·协同育人书新篇”贵州理工大数据学院数据科学训练营结题答辩报告会圆满举行...
- Python Socket(未编辑)
- 中原工学院计算机网络,计算机网络 考试重点 中原工学院.doc
- AsyncTask的理解和使用
- ios射击类游戏简单代码射击
- 过河问题(贪心算法)(python)
- 二阶可导的充要条件_可导函数在x
- 数据库系统概论--第六章 关系数据理论
- LeetCode刷题笔记2——数组2
- Egret 使用Texture Merger制作美术字体
- 液晶屏COG封装技术-工业显示领域主流
- 最新最全论文合集——丘成桐数学科学中心
- C# Windows-API-Code-Pack for .Net