android6.0第三方APP获得设备节点的访问权限

本文介绍了在Android 6.0及以上版本中,由于SEAndroid安全机制,第三方APP如何获得对设备节点的访问权限。通过在file_contexts和device.te文件中添加规则,并在untrusted_app.te文件中授权,以及在ueventd.rc文件中设置权限,可以实现第三方APP在SElinux环境下访问内核节点。此外,还提供了将APK作为系统应用安装并访问system目录的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前使用android4.4的系统进行开发时 system/app(系统自带APP) 目录下的 app 可以直接访问 dev 目录下的设备节点,Android 5.0 以后,因为采取了 SEAndroid/SElinux 的安全机制,即使拥有 root权限,或者对某内核节点设置为 777 的权限,仍然无法在 JNI 层访问。


这里先了解一下 SEAndroid app 的分类
SELinux(或SEAndroid)将app划分为主要三种类型(根据user不同,也有其他的domain类型):

  1. untrusted_app 第三方app,没有android平台签名,没有system权限
  2. platform_app 有android平台签名,没有system权限
  3. system_app 有android平台签名和system权限

从上面划分,权限等级,理论上:untrusted_app < platform_app < system_app


那么第三方APP,在SElinux下,如何获得对一个内核节点的访问权限
分下面三个步奏:

  1. 在 android/external/sepolicy/file_contexts 文件中添加:
    /dev/relay u:object_r:relay_device:s0
    其中“relay”是我的设备节点名称,可自行更改,“relay_device”是自定义设备名

  2. 在 android/external/sepolicy/device.te 文件中添加:
    type relay_device, dev_type, mlstrustedobject;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值