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()" 最近看小程序启动时间(性能监控),启动时间比较长,所以考虑使用分包加载. 但在使用过程中遇 ...
随机推荐
- golang基础--method方法
Go没有类似python语言中类class的概念,但依旧有method 类型方法定义格式如下 func (a mytype) method_name(x type)(y type){ return y ...
- c++拆分字符,不拆开中文
// ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <string.h&g ...
- Oracle入门第四天(上)——表管理与数据处理
一.常见数据库对象 1.基本对象 对应的对象英文名参考:https://docs.oracle.com/cd/B19306_01/server.102/b14220/intro.htm#sthref6 ...
- 【Hadoop】Hadoop 中 RPC框架原理、代码示例
0.内容 1.hadoop中的RPC框架封装思想 2.Hadoop RPC 实现方法 3.服务调用动态转发和负载均衡的实现思考 4.协议代码: package com.ares.hadoop.rpc; ...
- 20155202 2016-2017-2 《Java程序设计》第10周学习总结
20155202 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 计算机网络基础 一.网络模型 模型分类: OSI,TCP/IP,五层协议的体系结构,以及各 ...
- 20155308 实验四 Android开发基础
20155308 实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组件.布局管理器的使用: 掌握Android中 ...
- class kind type sort区别
class多用于 级别比如高级货就是 first class,primary class等等,以此类推kind 和sort 基本一样,就像你说的,译为 种类,what kind of疑问,回答时用so ...
- echarts 柱状图移除圆角
itemStyle: { normal: { color: '#59519f', barBorderColor: '#59519f', barBorderWidth: 6, barBorderRadi ...
- day 7 __new___
1 __new__方法 创建对象 实质是:调用父类的__new__方法创建的对象 class Dog(object): def __init__(self): print("---init方 ...
- 【HDU4565】So Easy!
[HDU4565]So Easy! 题面 要你求 \[ \lceil (a+\sqrt b)^n \rceil \% m \] 其中\(0<a,m<2^{15},(a-1)^2<b& ...