apk获取设备文件节点操作权限

本文详细介绍了如何在Android6.0系统中为应用程序获取system权限,包括修改AndroidManifest.xml、使用系统密钥签名APP等步骤,并进一步阐述了如何通过修改te文件使system_app能够访问/dev下的设备节点。

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

项目需要对驱动进行白盒测试,涉及到/dev和/sys下设备节点的操作,log信息会报权限错误,环境为android 6.0

1. app获取system权限,成为system_app
1.1 在 AndroidMainfest.xml 中显示添加权限
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.my.usbtest"
    android:sharedUserId="android.uid.system">
1.2 使用系统密钥签名app

以下的操作基于我的源码目录进行的,仅作参考
- a.进入密钥目录:cd build/target/product/security/
- b.复制密钥工具到密钥目录:cp out/host/linux-x86/framework/signapk.jar
- c.复制未签名版apk到密钥目录:cp /app-release-unsigned.apk .
- d.开始签名:java -jar signapk.jar platform.x509.pem platform.pk8 app-release-unsigned.apk output.apk
- e.安装签名后的apk:adb install output.apk
- f.测试:adb shell ps -Z,可看到自己的app属于system_app,而未签名前是untrusted_app
这里写图片描述

2. 修改te文件,使得system_app可访问/dev节点

一般 /dev 下的节点都是通过 uevent.rc 管理的,以访问 /dev/test 为例
- a.在uevent.rc中添加:/dev/test 0666 system system
- b.在file_contexts中添加:/dev/test u:object_r:test_device:s0
- c.在 device.te 添加:type test_device, dev_type, mlstrustedobject;
- d.在 system_app.te 添加:allow system_app test_device:chr_file { rw_file_perms ioctl }; (如果你需要ioctl的话)

到这里,应该就可以使用JNI或者exec调用底层脚本对节点进行操作了,/sys与/proc同理,不再赘述,有需要的可以看下最后的参考链接


  1. Android 在 SElinux下 如何获得对一个内核节点的访问权限
  2. [Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)热门干货
  3. Android6.0系统权限那些事
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值