*郑重声明:本文内容只为学习研究之用,如有人用于非法用途,产生的后果笔者不负任何责任。
找到一个方法,在PC端adb shell中执行pm grant com.android.xxx android.permission.READ_CONTACTS
就可以授权成功,无需root。
实验结果如下表所示:
设备 | 系统版本 | 结果 |
---|---|---|
Pixel/Pixel 2 | Android 10 | 成功 |
一加6 | Android 10 | 成功 |
小米max 2 | Android 7.1 | 失败 |
小米手机由于厂商自定义了一系列安全措施,比原生系统更严格一些。
以Pixel为例,介绍获取权限的过程:
将设备的开发者选项打开,进入USB调试状态,连接至PC端。
然后,执行命令:
adb push getPermission.sh /storage/emulated/0/Download
,
将shell脚本getPermission.sh
拷贝至手机Download目录下。
脚本内容如下:
1 | #!/bin/bash |
在cmd中执行命令:
adb shell
cd /storage/emulated/0/Download
sh getPermission.sh
到设置中查看,应用已被授予权限。
另外还尝试了在手机中安装终端Termux,在终端中执行pm命令,但是出现报错:
cmd: Failure calling service package: Failed transaction(2147483646)
参考这里的解释,需要开放selinux许可。
操作方法参考这里,需要刷入第三方Recovery,比较麻烦了。