安全测试常用 ADB 命令 | 您所在的位置:网站首页 › android常用命令全集 › 安全测试常用 ADB 命令 |
ADB,全称 Android Debug Bridge,即 Android 调试桥,是一个对 Android 开发人员和测试人员都必不可少的工具。adb 包含在 Android SDK 平台工具软件包中。可以使用 SDK 管理器下载此软件包,该管理器会将其安装在 android_sdk/platform-tools/ 下。如果需要独立的 Android SDK 平台工具软件包,请点击此处进行下载。 关于 adb 的详细用法,无论是 Android 官方站点还是其他博客已经有相当细致的描述,可以参考如下文章 。本篇博客是总结笔者在安全测试中,常用的 adb 命令。 Android 调试桥 (adb) (官方文档,可能需要科学上网)ADB Usage Complete / ADB 用法大全 安全测试常用 ADB 命令 当前系统前台 Activity用户当前的前台 Activity 即我们的栈顶 Activity 方法一 adb shell dumpsys activity activities | findstr mResumedActivity方法二 adb shell dumpsys activity activities | grep mResumedActivity输出 mCurrentFocus=Window{86c6209 u0 shengivictor.androidcomm/com.example.shengivictor.androidcomm.MainActivity} 系统运行的所有 Activity命令 adb shell dumpsys activity | findstr Run输出 Running activities (most recent first): Run #0: ActivityRecord{8240a87 u0 shengivictor.androidcomm/com.example.shengivictor.androidcomm.MainActivity t577} Running activities (most recent first): Run #0: ActivityRecord{84a6505 u0 com.huawei.android.launcher/.unihome.UniHomeLauncher t1} Running activities (most recent first): Run #0: ActivityRecord{8240b83 u0 com.huawei.health/.MainActivity t581} APK 安装路径命令 adb shell pm path shengivictor.androidcomm输出 package:/data/app/shengivictor.androidcomm-40RDkYJdHTo3JwTI8ohknA==/base.apk应用安装文件目录说明 /system/app 存放 rom 本身附带的软件即系统软件;/system/priv-app 存放手机厂商定制系统的系统级应用;/data/app 存放用户自行安装的软件请注意,以上目录存放的都只是应用的安装数据,包括 apk 和相应的 lib 库文件,而非应用存储数据的文件。应用实际存储的数据,一般放在其私有目录下 /data/data/com.kugou.android,只有 root 用户和 app 本身能够读写该目录。 /system/app 下的文件,普通用户无法自行卸载(利用 CVE-2022-20611 漏洞,普通用户可卸载系统应用),而 /data/app 下的文件,用户可以自行卸载。 有用的脚本:下载系统所有 APK 到本地 正在运行的 Services命令 adb shell dumpsys activity services []输出 Activity Resolver Table: Non-Data Actions: android.intent.action.MAIN: 5b4cba8 org.mazhuang.guanggoo/.SplashActivity filter 5ec9dcc Action: "android.intent.action.MAIN" Category: "android.intent.category.LAUNCHER" AutoVerify=false Registered ContentProviders: org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider: Provider{7a3c394 org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider} #... 系统已定义的权限命令 adb shell pm list permissions -f | grep -A4 ACCESS_NOTIFICATION_SERVICE输出 + permission:com.android.systemui.permission.ACCESS_NOTIFICATION_SERVICE package:com.android.systemui label:null description:null protectionLevel:signature|privileged 系统日志命令 adb logcat []输出 I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}注意:上述命令每次重新运行,都会打印以前所有缓存的日志,可以通过 -c 选项清除缓存日志 adb logcat -c其他日志存放路径 /data/system/dropbox/ 用于记录 Android 运行过程中,内核,系统进程,用户进程等出现严重问题时的 log/data/tombstone 存放 Native 层崩溃日志 系统信息系统架构 adb shell getprop ro.product.cpu.abiAndroid 版本 adb shell getprop ro.system.build.version.release其实这些信息都可以在 /system/build.prop 文件看到。 与应用交互(传递 intent)利用 ADB 可以很方便的与四大组件进行通信(am命令) command用途start [options] 启动 指定的 Activitystartservice [options] 启动 指定的 Servicebroadcast [options] 发送 指定的广播force-stop 停止 相关的进程1.拉起应用(Activity) # 拉起应用 adb shell am start -n com.tencent.mm/.ui.LauncherUI # 停止应用 adb shell am com.tencent.mm2.拉起服务 adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService3.发送广播 adb shell am broadcast -a android.intent.action.BOOT_COMPLETED4.参数讲解 start [options] intent -D:启用调试功能。-W:等待启动完成。--start-profiler file:启动性能剖析器并将结果发送至 file。-P file:类似于 --start-profiler,但当应用进入空闲状态时剖析停止。-R count:重复启动 Activity count 次。在每次重复前,将完成顶层 Activity。-S:在启动 Activity 前,强行停止目标应用。--opengl-trace:启用 OpenGL 函数的跟踪。--user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。Intent -a action 指定 intent 操作,如 android.intent.action.VIEW。只能声明一次。-d data_uri 指定 intent 数据 URI,如 content://contacts/people/1。只能声明一次。-t mime_type 指定 intent MIME 类型,如 image/png。只能声明一次。-c category 指定 intent 类别,如 android.intent.category.APP_CONTACTS。-n component 指定带有软件包名称前缀的组件名称以创建显式 intent,如 com.example.app/.ExampleActivity。-f flags 向 setFlags() 支持的 intent 添加标记。--esn extra_key 添加一个空 extra。URI intent 不支持此选项。 --es extra_key extra_string_value 以键值对的形式添加字符串数据。--ez extra_key extra_boolean_value 以键值对的形式添加布尔值数据。--ei extra_key extra_int_value 以键值对的形式添加整数型数据。--el extra_key extra_long_value 以键值对的形式添加长整型数据。--ef extra_key extra_float_value 以键值对的形式添加浮点型数据。--eu extra_key extra_uri_value 以键值对的形式添加 URI 数据。 利用 ADB 的相关工具 scrcpyscrcpy 通过 ADB 调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制 Android 设备。支持 Linux、Windows 和 macOS。在最新版 Android 系统上(API 30:Android 11)还支持 音频转发。 QtScrcpyQtScrcpy 可以通过 USB / 网络连接 Android 设备,并进行显示和控制。无需root权限。也支持 Linux、Windows 和 macOS。与 scrcpy 最大的不同之处在于,QtScrcpy 支持自定义按键映射。 Android Device MonitorAndroid SDK 提供的工具,用于查看Android 系统资源、APP 以及文件系统操作等。个人觉得挺好用,但是 Android Device Monitor 已在 Android Studio 3.1 中弃用,并已从 Android Studio 3.2 中移除。 当然还有更多工具,不一一列举,绝大部分 Android 安全测试工具都会用到 ADB,这里只是列举了完全利用 ADB 实现的工具。 总结ADB 是 Android 提供的原生工具,其实是一个功能强大的工具集,包含各个子二进制,分布在 Android 文件系统的各个位置。普通开发既可以利用 ADB 进行常规调试和测试,渗透人员也可以利用 ADB 进行安全测试。了解常用的 ADB 命令是 Android 安全测试必不可少的基本技能。我们在这里只是阐述安全相关的一些测试命令,如果想了解更多,可以参考文章开头提到的官方和三方手册。 |
CopyRight 2018-2019 实验室设备网 版权所有 |