so加载报错:dlopen failed: couldn't map ... Permission denied
转自:https://blog.csdn.net/u013270444/article/details/60869376
问题描述:
我的应用当中集成了一个安全相关的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文件夹下吧。
另外一篇文章:https://blog.csdn.net/carefulboys/article/details/53893567
so加载报错:dlopen failed: couldn't map ... Permission denied的更多相关文章
- 关于android 5.0报错:dlopen failed: couldn't map ... Permission denied
问题描述: 我的应用当中集成了一个安全相关的sdk,而这个sdk中使用的so是加过壳的. 它加载native so的方式是:Java System.loadLibrary --> native ...
- Centos系统创建用户oracle后,用该用户登陆系统,页面加载报错GConf error
Linux 的 GConf error 解决办法 问题: Centos系统创建用户oracle后,用该用户登陆系统,页面加载报错,导致重新进入Centos系统后出现: GConf error:Fail ...
- 动态链接库加载出错:cannot restore segment prot after reloc: Permission denied
在执行可执行程序时,出现动态链接库加载出错:cannot restore segment prot after reloc: Permission denied. 主要是由于Linux 内核中提供的强 ...
- zabbix 启动报错 cannot set resource limit: [13] Permission denied
zabbix 启动报错 cannot set resource limit: [13] Permission denied 1.zabbix-server 启动报错 报错信息如下: ::140823. ...
- React引入AntD按需加载报错
背景:React使用create-react-app脚手架创建,然后yarn run eject暴露了配置之后修改less配置, 需求:实现antd组件按需加载与修改主题. 一开始是按照webpack ...
- 关于angular5的惰性加载报错问题
之前为了测试一个模块优化问题,于是用angular-cli快速搭建了个ng5的脚手架demo,在应用惰性加载功能的时候发现浏览器报错如下: ERROR Error: Uncaught (in prom ...
- vue-cli3+typescript+路由懒加载报错问题
vue-cli3的版本是3.4.1 出现的情况是网页显示正常,但是终端一直提示找不到模块: 如果去掉路由懒加载的方式,就没有报错: 原因是以前我们习惯直接写文件名而不加后缀, 现在使用ts时就需要写v ...
- react-antd 按需加载报错
基于create-react-app 搭建的 react 项目 引入 antd UI 配置按需加载 但是报一下错误 .翻译过了一下 是内嵌JavaScript选项没有开启什么的 大白话就是 les ...
- 【已解决】wepy中使用分包加载报错
问题: "xxx.js 出现脚本错误后者未正确调用Page()" 最近看小程序启动时间(性能监控),启动时间比较长,所以考虑使用分包加载. 但在使用过程中遇 ...
随机推荐
- C#基础 const和readonly关键字
静态常量 所谓静态常量就是在编译期间会对变量进行解析,再将常量的值替换成初始化的值.动态常量 所谓动态常量就是编译期间会将变量标记只读常量,而不用常量的值代替,这样在声明时可以不初始化,可以延迟到构造 ...
- 20155207 2006-2007-2 《Java程序设计》第4周学习总结
20155207 2006-2007-2 <Java程序设计>第4周学习总结 教材学习内容总结 ISP原则:一个类对另一个类的依赖应该限制在最小化的接口上. OCP原则:软件构成(类,模块 ...
- 20155214 2016-2017-2 《Java程序设计》第4周学习总结
20155214 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 Chapter6 父类就是将多个类的相同代码提升(Pull Up) 子类继承父类会继承到pr ...
- Swift - 重写导航栏返回按钮
// 重写导航栏返回按钮方法 func configBackBtn() -> Void { // 返回按钮 let backButton = UIButton(type: .custom) // ...
- SPOJ11469 SUBSET
题面 Farmer John's owns N cows (2 <= N <= 20), where cow i produces M(i) units of milk each day ...
- bzoj1861 书架
bzoj1861 书架 原题链接 神题... 先吐槽洛谷的样例 10 10 1 3 2 7 5 8 10 4 9 6 Query 3 Top 5 Ask 6 Bottom 3 Ask 3 Top 6 ...
- 八、Django之Models(译)
模型(Models) 模型是你的数据的唯一的.确定的信息源. 它包含你所储存数据的必要字段和行为. 通常,每个模型对应数据库中唯一的一张表. 基础: 每个模型都是一个Python类,它们都是djang ...
- NO.06--聊一聊“币”吧!
近期博主更新的频率明显慢来 ,一来是最近的工作比较忙碌,几个项目几乎同时要上线.二来是在思考是不是把我平时生活中的一些事情写进来博客,不只是分享分享技术. 趁着区块链.比特币火爆,博主也算是略有涉猎, ...
- 基础的Servlet
1.认识Servlet 今天接触了Servlet,我就写了这篇Servlet的文章.首先,我们了解一下Servlet是什么: 这是百度百科的解释,我个人理解是可以用来前后端交互的一个东西,例如可以实现 ...
- 套接口socket编程(Client/Server编程实例)
基本概念 套接口也就是网络中的ID.网络通信,归根到底还是进程间通信(不同计算机上的进程间的通信).在网络中,每一个节点(计算机或路由器)都有一个网络地址,也就是IP地址. IP地址:在网络中唯一标识 ...