android 禁用dlsym_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:
android 禁用dlsym_Android7.0对dlopen的改变——读取私有.so结果变化相关推荐
- dlopen android 权限,Android7.0对dlopen的改变——读取私有.so结果变化
两个内存段 在同一个进程空间中dlopen一个.so文件,理论上在内存中是同一片区域,但实际调试中发现Android7.0(read "/proc/self/maps")中,先后读 ...
- android dlopen一个so,Android7.0对dlopen的改变
两个内存段 在同一个进程空间中dlopen一个.so文件,理论上在内存中是同一片区域,但实际调试中发现Android7.0(read "/proc/self/maps")中,先后读 ...
- android7dlopen,Android7.0对dlopen的改变
两个内存段 在同一个进程空间中dlopen一个.so文件,理论上在内存中是同一片区域,但实际调试中发现Android7.0(read "/proc/self/maps")中,先后读 ...
- android 禁用dlsym_Android10 aarch64 dlopen Hook
前言[toc] 对于自动化hook Il2cpp 的模块来说, dlopen 的hook相当于一个大门, 没有该大门口, 一切都是纸上谈兵 在 armabi-v7a 上hook dlopen, 轻松的 ...
- android studio 3.0新功能介绍
谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.g ...
- ym——物联网入口之中的一个Android蓝牙4.0
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 假设还有同学不知道蓝牙4.0能够做什么请查看Android+蓝牙 4.0 将带来什么? ...
- ym——物联网入口之一Android蓝牙4.0
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 如果还有同学不知道蓝牙4.0可以做什么请查看Android+蓝牙 4.0 将带来什么? ...
- Android 从6.0,7.0,8.0,9.0,10.0的特性整理和适配方案(不好含全部新特性,总结了一些可能应用中会遇到的)
总所周知从Android6.0之后的每一次系统迭代,系统特性都有比较大的改变.平时做开发的时候都是有在注意这些方面的适配,但是一直没有时间去整个一下,今天正好来总结一下吧.如果觉的太长,可以等下一篇文 ...
- Google发布Android Studio 1.0
第一个IDE稳定版本:Google发布Android Studio 1.0 摘要:Google于今天发布了Android Studio 1.0,其新增的突出特性包括:首次安装向导方面.示例导入和 ...
最新文章
- 联想拯救者Y9000-ubuntu-U盘启动失败解决方法
- 如何重启Cloudera Manager?
- 计算机音乐作曲排名2019,2019金曲排行榜_2019《全球华人歌曲排行榜》年度五强名单公布...
- wxpy 实现微信机器人
- Linux下find用法总结
- ruby打印_Ruby程序打印一个数字的乘法表
- 用popen函数操作其它程序的输入和输出
- ie8无法打开oracle em,IE8无法进入debug模式而引发的Oracle数据库问题-Oracle
- 设备零线地线短路维修
- php-win.exe 是什么,windows桌面指的是什么
- The authentication type 10 is not supported
- #码神心得_03# 浮点类型、char类型
- 近义句子转换软件 - 同义词转换器软件
- python barrier_Python中的Barrier对象
- windows平台视频渲染技术小结
- 2021最新大厂Java面试集合,顺利拿到offer
- 一、saturn快速启动
- vb.net读取写入EXCEl的终极方法-NOPI
- 数字化工厂车间条形码应用视频
- 双子星tv源码_云水日记-双子星IPTV管理系统搭建教程