通过 adb 列出 Android 应用程序的权限
Posted
技术标签:
【中文标题】通过 adb 列出 Android 应用程序的权限【英文标题】:Listing permissions of Android application via adb 【发布时间】:2014-02-01 04:23:40 【问题描述】:使用 adb,我如何知道 android 应用程序需要哪些权限?
因为我想在不同的设备上显示多个应用的权限,在Google Play
或者Settings
中查看>Applications manager
需要太多的手动操作。
【问题讨论】:
【参考方案1】:我只是想将 Jason 和 Juuso 的答案结合在一起,并注意到前者列出了授予的权限,而后者列出了请求的权限(包括那些被授予)。
要查看仅授予的权限(但忽略已请求但未授予的权限),请使用
adb shell dumpsys package packagename
并检查输出底部的grantedPermissions
部分。
列出所有权限(已请求但未授予 + 已请求并已授予):
注意一个包的 APK。您可以运行相同的命令
adb shell dumpsys package packagename
并从其输出的codePath
元素中获取 APK 路径。
(如果您的设备/模拟器上没有 aapt
)您需要从设备/模拟器中提取 apk,正如 Juuso Ohtonen 在他的回答中指出的那样。所以从你的桌面执行这样的事情:
adb pull /data/app/com.your.package.apk
列出包的所有权限
如果设备/模拟器中缺少 aapt
,可以在您的 Android SDK 中的 build-tools/<version>/
下找到。
然后执行
aapt d permissions /path/to/com.your.package.apk
【讨论】:
说,我注意到“adb shell dumpsys package”命令显示了关于应用程序的多种信息。它还可以显示应用程序正式使用的所有文件夹,例如外部存储(在我的设备上的“/storage/emulated/0/Android/data/PACKAGE_NAME”上)? Grep 高亮是你的朋友adb shell dumpsys package com.example | grep --color -E "granted=true|$"
【参考方案2】:
列出所有应用程序及其安装路径(如果您只对第 3 方应用程序感兴趣,请使用 -3
标志)。例如,让我们尝试找出 YouTube 应用程序的权限。 adb shell pm list packages -f
输出:
... 包:/data/app/com.google.android.youtube-1.apk=com.google.android.youtube ...
从设备中拉取选定的 apk:adb pull /data/app/com.google.android.youtube-1.apk
使用 aapt d permissions com.google.android.youtube-1.apk
输出:
uses-permission: android.permission.BROADCAST_STICKY
uses-permission: android.permission.CALL_PHONE
uses-permission: android.permission.CALL_PRIVILEGED
uses-permission: android.permission.WRITE_SETTINGS
uses-permission: android.permission.WRITE_SECURE_SETTINGS
uses-permission: android.permission.READ_CONTACTS
uses-permission: android.permission.READ_CALL_LOG
uses-permission: android.permission.WRITE_CONTACTS
uses-permission: android.permission.WRITE_CALL_LOG
uses-permission: android.permission.SYSTEM_ALERT_WINDOW
uses-permission: android.permission.INTERNAL_SYSTEM_WINDOW
uses-permission: android.permission.ADD_SYSTEM_SERVICE
uses-permission: android.permission.VIBRATE
uses-permission: android.permission.BLUETOOTH
uses-permission: android.permission.BLUETOOTH_ADMIN
uses-permission: android.permission.REORDER_TASKS
uses-permission: android.permission.CHANGE_CONFIGURATION
...
...
【讨论】:
不错的答案,但为什么需要第 2 步?没有它也能正常工作。 @DenisKniazhevaapt
工具未在 adb shell 中提供
@coco_ 你说得对,我一定是在使用预装了aapt
的模拟器。【参考方案3】:
快速方法: adb shell dumpsys 包包名 | grep 权限
【讨论】:
这只会列出已授予的权限,请参阅下面的答案 不就是只包含带有“pemission”字样的权限吗? 在 Windows 机器上使用:adb shell "dumpsys package packagename | grep permission"
以上是关于通过 adb 列出 Android 应用程序的权限的主要内容,如果未能解决你的问题,请参考以下文章
来自 dumpsys 中列出的显示的 adb screenrecord 辅助显示
Android 逆向Android 权限 ( adb 降权相关的属性 | ro.secure 属性 | ro.debuggable 属性 | service.adb.root 属性 )(代
Android 逆向Android 权限 ( adb 降权相关的属性 | ro.secure 属性 | ro.debuggable 属性 | service.adb.root 属性 )(代