关于android 5.0报错:dlopen failed: couldn't map ... Permission denied
问题描述: 
我的应用当中集成了一个安全相关的sdk,而这个sdk中使用的so是加过壳的。
它加载native so的方式是:Java System.loadLibrary ——> native so 壳 ——> 内存中脱壳 ——> 写到/data/data/package/files/libxxx.so ——> c 中调用dlopen。
此时dlopen报错dlopen failed: couldn’t map “/data/data/package/files/libxxx.so” segment 1: Permission denied。进入到/data/data/package/files/目录,发现libxxx.so被删除。
一度感觉非常奇怪,为什么失败。google搜了一段,可能是SELinux机制的功劳。。。总算找到一点线索。
ps -Z 查看进程的标记,发现是PLATFORM_APP。当SELinux对应用打标为PLATFORM_APP时dlopen不能从/data目录加载so,会报如上错误并将so删除。
那么哪些是PLATFORM_APP,当应用签名与系统签名一样时就是PLATFORM_APP。
比如:系统定制厂商,自己的浏览器就是PLATFORM_APP
解决方案:
1。既然不可以从data下面读取,那么就不在从data下面的目录读取。把so文件放到system/etc/你自己的文件夹下
2。so文件就老老实实的放在jniLib文件夹下吧。
关于android 5.0报错:dlopen failed: couldn't map ... Permission denied的更多相关文章
- so加载报错:dlopen failed: couldn't map ... Permission denied
		
转自:https://blog.csdn.net/u013270444/article/details/60869376 问题描述: 我的应用当中集成了一个安全相关的sdk,而这个sdk中使用的so是 ...
 - zabbix 启动报错 cannot set resource limit: [13] Permission denied
		
zabbix 启动报错 cannot set resource limit: [13] Permission denied 1.zabbix-server 启动报错 报错信息如下: ::140823. ...
 - ionic3 更新打开apk android 8.0报错
		
项目中安卓强制更新,当文件下载完.在android 8.0中不能打开apk包. 引入插件报一下错误 import { FileOpener } from '@ionic-native/file-ope ...
 - 容器中使用iptables报错can't initialize iptables table Permission denied (you must be root)
		
背景 在docker容器中部署了一微服务,该服务需要docker push镜像到docker registry.因此,docker容器中需要安装docker服务.但在启动容器的时候,却报错: can' ...
 - mac上安装webpack报错解决方法Hit error EACCES: permission denied, mkdir '/usr/local/lib/node_modules/webpack
		
node-pre-gyp WARN Using needle for node-pre-gyp https download node-pre-gyp WARN Pre-built binaries ...
 - git报错 error: cannot stat ‘'web/js': Permission denied
		
切换分支时报错: error: cannot stat ‘'web/js': Permission denied 解决方法:退出编辑器.浏览器.资源管理器等,然后再切换就可以了.
 - zabbix报错cannot set resource limit: [13] Permission denied解决方法
		
zabbix-server启动时出现以下错误: 2912:20180326:050930.023 using configuration file: /etc/zabbix/zabbix_server ...
 - Hadoop报错:org.apache.hadoop.security.AccessControlException: Permission denied: user=xxxx
		
问题出现原因: 因为远程提交hadoop的任务的情况下如果,没有hadoop 的系统环境变量,就会读取当前主机的用户名,所以Hadoop集群的节点中没有该用户名的权限,所以出现的异常. 解决方法: S ...
 - ionic 打包 报错Execution failed for task ':processDebugResources'. > com.android.ide.common.process.ProcessException: Failed to execute aapt
		
在platform --> android目录下找到build.gradle文件,打开并在def promptForReleaseKeyPassword() {...}函数前加入以下内容: 完整 ...
 
随机推荐
- xampp中mysql重置root密码
			
1. 停止mysql:用图形化工具或者在cmd命令下输入net stop mysql,在c盘根目录下输入 2. 打开cmd,切换目录到 /xampp/mysql/bin, 运行 mysqld ...
 - MySQL入门很简单:  4  创建 修改删除表
			
1. 创建表的方法 1)创建表的语法形式 首先,选择数据库: USE 数据库名: 创建表: CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件 ...
 - 找子串替换(kmp)poj1572
			
题目链接:http://poj.org/problem?id=1572 输入数据时要注意,这里是string型 用getline(cin,origin[i]); #include <string ...
 - 起一个node服务
			
使用node开发一个应用,非常简单,甚至都不用去配置一堆文件来启动一个webu服务器,直接去官网把这一段示例代码拷过来 https://nodejs.org/en/about/ 中文网没有这个abou ...
 - LIS的string用法
			
题目链接 使用的是string里的find函数 stl大法好 #include<iostream> #include<cstdio> #include<cstring&g ...
 - OpenMP常用函数
			
1.设置线程数目 定义如下: void omp_set_num_threads(int num_threads); 通过该函数来指定其后用于并行计算的线程数目,其中参数num_threads就是指定的 ...
 - Notepad++插件Emmet和Python Script的安装
			
最近在做一个项目,涉及到大量的HTML.CSS代码的编写,手动写代码效率实在 是低下.于是想搜索一下,有没有Notepad++插件可以支持自动生成的,果不其然还真有.Emmet,这款神器其实就是 Ze ...
 - python中的反斜杠问题
			
python本身使用 \ 来转义一些特殊字符,比如在字符串中加入引号的时候 s = 'i\'m superman' print(s) # i'm superman 为了防止和字符串本身的引号冲突,使用 ...
 - element-UI动态的循环生成Popover弹出框的方法
			
父组件:<div class="itemLi" :class="{gray: (salse.flashsaleStatus==3 || salse.flashsal ...
 - 谈谈JDK8中的字符串拼接
			
字符串拼接问题应该是每个Java程序员都熟知的事情了,几乎每个Java程序员都读过关于StringBuffer/StringBuilder来拼接字符串. 在大多数的教程中,也许你会看到用+号拼接字符串 ...