Android:java.io.IOException: Cannot run program "/system/xbin/su": error=13, Permission denied

  • java.io.IOException: Cannot run program "/system/xbin/su": error=13, Permission denied

 

  • 我的情况

同一套App程序,之前跑在Android4.0中没有这个问题,这个问题是在新的安卓板,跑的是Android7.1.2系统中发现的,我第一个反应就是权限不够,但是即使进入安卓设备中的命令行用"chmod"命令修改权限成功,也无法解决这个问题,这个问题经过网上其他资料了解到,在5.0版本之后,下面这种方式已经不能获取root权限了.

Process su = Runtime.getRuntime().exec("/system/xbin/su");

这里临时解决方案是使用adb工具,临时修改系统的参数设置:

adb root
adb shell setenforce 0

注意要先进行"adb root"操作,否则,执行"adb shell setenforce 0"操作的时候会报错:

setenforce: Couldn't set enforcing status to '0': Permission denied

如果要永久的设置,需要修改系统启动参数,加入"androidboot.selinux=permissive"这样的设置,这里暂时还没有尝试,不过接下来我会去尝试的.

虽然这个问题解决了,但是我想要的结果并没有达到,因为虽然没有这个问题了,也能执行获取root权限的命令了,但是结果却返回的是1,这个是说明命令执行失败的,原因是这个操作不被系统所允许.这个现象说明了su程序虽然能被调用了,但是su程序执行过程中失败了,怎么办?没错,接下来就修改su源代码吧,不过这里我没有仅仅修改su的源码,而是参考了额外说明中的网站,对系统源码进行了修改,并重新编译系统,相关内容在我的这篇博客中:

https://blog.csdn.net/uestc_ganlin/article/details/90673527

  • 额外说明

以下内容,参考自:https://blog.csdn.net/kangear/article/details/51872653.

Android4.2.2(Jelly Bean)上,调用su命令就可以获取到root权限并执行一些命令.但是在Android4.3之上的版本,Google为这种获取root权限的方法设置了层层障碍:

1.su命令源码中添加了uid检验,只允许shell/root用户进行调用;

2.Zygote源码中添加了一些东西,屏蔽掉了App可以进行setuid的功能;

3.adb源码中添加了一些东西,屏蔽掉了adb可以进行setuid的功能(这里指的是对于非userdebug等类似版本的系统) ;

4.开启了SELinux安全模块,1和2条都满足情况下也会中断su命令的执行.
 

PCM DUMP 数据通常用于捕获音频流的数据,这对于分析音频编码和解码过程非常有用。在 Android 设备上,你可以通过以下步骤获取 PCM DUMP 数据: ### 获取 ADB 控制权 首先,需要确保设备已经连接到计算机并处于开发者模式。接着使用 `adb wait-for-device` 和 `adb remount` 来等待设备连接,并使其内核可以被重新配置。 ```bash # 确保设备已连接 adb devices -l # 列出设备列表确认设备已连接 # 等待设备连接完毕 adb wait-for-device # 启动根权限环境 adb remount ``` 之后,使用 `adb shell chmod 777 vendor` 并 `adb shell setenforce 0` 来修改文件系统权限,允许访问特定目录下的文件。 ```bash # 修改 vendor 目录权限 adb shell chmod 777 vendor/ # 解除 SELinux 安全策略限制 adb shell setenforce 0 ``` 上述命令完成后,你需要确保所有必要的权限已经被赋予,并且 SELinux 已经被禁用,以便于后续操作。 ### 执行 PCM DUMP 实际操作 一旦设备准备就绪,你就可以开始实际的 PCM DUMP 过程了。这通常涉及到将设备的音频输出连接到外部录音设备,然后启动 Dumping 工具来记录数据。例如,使用 `dumpsys audio dump` 命令可以在设备上直接查看和导出音频数据: ```bash # 检查当前设备的音频状态 adb shell am startservice com.android.server.audio.AudioServer/.AudioService # 开始获取 PCM DUMP 数据 adb shell dumpsys audio dump > audio_dump.txt ``` 这里,我们创建了一个名为 `audio_dump.txt` 的文件来保存结果。运行此命令后,会生成包含 PCM 编码音频数据的文本文件。 ### 分析和处理 PCM DUMP 数据 一旦获得了 DUMP 文件,接下来就是解析这些数据了。这通常涉及文本编辑器、脚本语言或其他专用工具(如 Python 中的 NumPy 或 SciPy 库),用于提取和转换 PCM 格式的数据。 如果你想要进一步分析音频内容,可以使用专门的音频信号处理软件或者编写自定义脚本来完成这个任务。 --- ### 相关问题: 1. 如何在不同版本的 Android 系统上启用 ADB Root 权限? 2. 在获取 PCM DUMP 数据前,是否有必要先检查设备的音频驱动程序是否正常工作? 3. 分析 PCM DUMP 数据时,常见的挑战有哪些? --- 注意:以上步骤假设你的设备已经适当地授权给开发者模式,并且具有足够的存储空间和性能来进行此类操作。不同的设备型号和操作系统版本可能会有差异,请根据实际情况调整步骤。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值