• ADB 工具


    1. Android 系统主要目录描述

    #目录           子目录                  功能描述
    #/acct          /                  系统回收站,删除的系统文件
    #/cache       /                   是缓存文件夹,主要放缓存的文件
    #/data        /                    存放用户安装的软件以及各种数据
    #/data       /app/               用户自己安装的apk文件放在这个目录下
    # /data         /data/           用户安装文件存储位置,软件以包名 package name 来命名
    #/data       /system/          记录手机安装信息等文件的目录
    #/etc         /                      配置文件,指向/system/etc/
    #dev         /                      设备文件,里面的文件很多都是设备模拟的文件系统
    #/proc      /                       目录下包含着系统运行的各种信息
    #/proc      /cpuinfo             查看CPU相关信息
    #/proc      /meminfo           查看内存相关信息
    #/storage   /                      手机存储设备,sdcard0表示第一块SD存储卡
    #/mnt        /                      挂载点,sdcard存储卡挂载目录
    #/sys         /                      存放linux内核文件
    #/system   /                      存放Android系统文件
    #/system   /app/                存放系统程序
    #/system   /bin/                 存放的主要是Linux系统自带的组件
    #/system  /build.prop         Andriod系统中很重要的文件,记录系统的设置和改变
    #/system  /etc/                  主要存放安卓系统的核心配置文件
    #/system  /fonts/               系统文字存放目录
    #/system  /framework/       核心文件,系统平台运行框架
    #/system   /lib/                  存放几乎所有的共享库(.so)文件
    #/system   /media/             存放系统提示音以及系统铃声
    #/system   /usr/                 用户的配置文件,如键盘布局、共享、时区文件等
    #/sbin       /                       系统工具,用于调试adbd程序
    #
    Android 主要系统目录描述

    2.Android测试环境搭建

    第一步:安装JDK;下载地址:https://www.oracle.com/java/technologies/javase-downloads.html

    第二步:安装Eclipse;下载地址:http://www.eclipse.org/downloads/

    第三步:安装AndroidSDK;Android SDK下载地址:https://www.androiddevtools.cn/,进入网页,在SDK Tools例表项中选择对应的版本下载。配置系统环境变量:新建系统变量名:ANDROID_SDK_HOME,变量值D:softAndroid-SDK(安装目录),编辑Path变量:%ANDROID_SDK_HOME%platform-tools;%ANDROID_SDK_HOME% ools;%ANDROID_SDK_HOME%uild-tools29.0.3

    3.ADB工具

    3.1 ADB主要功能

    1.可以快速更新设备或模拟器上的软件

    2.可以在设备或模拟器上运行shell命令

    3.可以同步设备或模拟器上的文件,即上传、下载文件

    4.可以实时抓取APP运行时的Log信息

    5.查看设备硬件信息、查看应用程序占用资源

    3.2 连接设备或模拟器

    1.连接真实手机设备:

    (1)USB连接:通过USB将手机连接到PC端->下载安装android手机驱动->在手机设置找到开发者选项打开usb调试->adb devices->adb -s device_id shell

    (2)WIFI连接:在手机设置找到开发者选项打开网络usb调试->adb devices能检测到对应设备->adb tcpip 5555(确定手机端和电脑端的wifi通讯端口)->拔掉usb线,再通过命令(adb connect 192.xxx.xx.x:5555)连接。注意:需要电脑和手机在同一网段,才能通过Wifi正常连接

    2.连接模拟设备

    下载夜神模拟器安装->用命令adb connect 127.0.0.1:62001连接

    3.3ADB基本命令

    1.adb 服务
    
    (1)adb start-server     #启动adb服务器,当adb出现异常后,可以重启adb 
    (2)adb kill-server     #关闭adb服务器,当adb状态不稳定,可以关闭adb
    
    2.设备
    
    (1)adb devices     #查询连接的设备或模拟器
    #命令adb devices 运行后有三种状态:
    #device:表示找到设备并与adb连接上
    #no device:表示当前没有模拟器在运行,或者没有找到设备。
    #offline:表示设备或模拟器没有与adb相连或者没有响应。
    (2)adb -s device_id cmd     #向特定设备发送adb命令  
    #
    adb devices
    List of devices attached
    97ZD4D8D0E      device
    adb -s 97ZD4D8D0E shell
    rk3399_imvt:/ #
    
    3.重启
    
    (1)adb reboot     #正常重启
    (2)adb reboot bootloader     #重启到bootloader(刷机模式)
    (3)adb reboot recovery     #重启到recovery(恢复模式)
    
    4.查看service
    
    adb shell service list     #查看service
    
    5.查看进程
    
    (1)adb shell ps     #列出进程表及其pid
    (2)adb shell kill pid     #杀死指定pid的进程
    (3)adb shell ps -p pid     #查看指定进程信息
    (4)adb shell "ps | grep <被测应用包名>"     #获取指定应用的进程ID(PID),注意要在adb shell 后面加双引号,否则会报错grep不是内部命令
    (5)adb shell cat /proc/$pid/status     #通过pid查看对应程序的进程状态、用户ID(UID)
    
    6.查看系统当前内存使用情况
    
    (1)adb shell cat /proc/cpuinfo     #查看CPU相关信息
    (2)adb shell cat /proc/meminfo     #查看内存相关信息
    (3)adb shell dumpsys meminfo package     #查看指定包名应用内存使用情况
    
    7.Activity 调试
    
    (1)adb shell am start -n your.package.name/your.package.name-activity     #启动应用界面
    注意:如果用该命令行启动第三方应用报错:Security exception: Permission Denial,是无权限问题,可先使用adb root获取权限
    例:
    adb root
    adb shell am start -n tv.danmaku.bili/.MainActivityV2
    (2)adb shell am force-stop package    #停止应用
    
    8.安装apk
    
    (1)adb  install     #用来向设备安装软件。
    #命令格式如下:adb install [option] <path>
    #例:
    adb install E:2019-10-28	estapp-release.apk
    Performing Streamed Install
    Success #运行命令后,出现Success,表示成功安装到设备或者模拟器上。
    (2)adb install -r xxx.apk     #覆盖安装(保留缓存和数据)
    
    9.卸载apk
    
    (1)adb uninstall     #用来卸载设备上的软件。
    #命令行格式如下:adb uninstall [option] <package>
    #
    adb shell pm list package #例出包名,然后卸载对应的包adb uninstall com.sina.weibo
    Success #运行命令后出现Success,表示成功卸载应用
    (2) adb uninstall -k package     #卸载时保留数据和缓存目录
    
    10.获取当前打开应用的相关信息
    
    (1)adb shell dumpsys window | findstr mCurrentFocus     #获取当前打开应用的包名或窗口名
    (2)adb shell dumpsys window  | findstr mFocusedApp     #获取当前打开应用的包名或窗口名
    
    11.文件管理
    
    (1)adb pull    #将设备或模拟器中文件复制到PC端。命令格式如下:
    adb pull <remote> <local>#
    adb root  #先获取root权限
    adb pull /data/system/appops.xml E:2019-10-28	est/data/system/appops.xml: 1 file pulled. 4.9 MB/s (21014 bytes in 0.004s)  #将安卓设备上的appops.xml文件拷贝到PC端
    (2)adb push    #将PC端文件复制到设备或模拟器中。命令格式如下:
    adb push <local> <remote>
    (3)adb shell rm /sdcard/text.txt     #删除文件
    -f 强制删除文件不需要确认-r 递归删除文件夹内文件-i 删除文件前需要确认
    (4)adb shell mkdir -p /sdcard/temp/test/    #指定-p递归创建目录
    (5)adb shell touch /sdcard/text.txt     #创建文件
    (6)adb shell cp /sdcard/text.txt /sdcard/text/
    (7)adb shell mv /sdcard/1.txt /sdcard/2.text     #移动同一目录下文件相当于重命名文件
    
    12.查看设备应用
    
    (1)adb shell pm list packages     #查看设备所有应用包名
    (2)adb shell pm path your.package.name     #列出指定包名对应的apk路径
    #例adb shell pm path com.android.camera2
    package:/product/app/Camera2/Camera2.apk
    (3)adb shell pm clear your.package.name     #清空指定包名对应的应用的数据和缓存文件
    
    13.申请 root 权限
    
    adb shell
    su
    或
    adb root
    
    14.查看手机上所有的包名
    
    adb shell
    cd data/data;ls
    
    15.Linux多个命令行一起执行可以用";"或者"&&"进行分割
    
    16.adb shell 查看文件后退出
    
    exit 或者 Ctrl + D
    
    17.截取屏幕截图
    
    adb shell screencap /sdcard/screen.png
    #例:屏幕截图,保存到PC端$ adb shell
    shell@ $ screencap /sdcard/screen.png
    shell@ $ exit
    $ adb pull /sdcard/screen.png
    18.录制视频
    
    adb shell screenrecord [options] filename
    #
    adb shell screenrecord /sdcard/demo.mp4
    
    按Ctrl+C键可停止屏幕录制;如果不手动停止,到三分钟或--time -limit设置的时间限制时,录制将会自动停止
    
    screenrecord 实用程序的局限性:
    (1)音频不与视频文件一起录制。
    (2)无法在搭载 Wear OS 的设备上录制视频。
    (3)某些设备可能无法以它们的本机显示分辨率进行录制。如果在录制屏幕时出现问题,请尝试使用较低的屏幕分辨率。
    (4)不支持在录制时旋转屏幕。如果在录制期间屏幕发生了旋转,则部分屏幕内容在录制时将被切断。
    screenrecord 选项说明:
    --help   显示命令语法和选项
    --size width x height   设置视频大小:1280x720。默认值为设备的本机显示屏分辨率(如果支持);如果不支持,则为 1280x720。为获得最佳效果,请使用设备的 Advanced Video Coding (AVC) 编码器支持的大小。
    --bit-rate rate  设置视频的视频比特率(以 MB/秒为单位)。默认值为 4Mbps。您可以增加比特率以提升视频品质,但这样做会导致视频文件变大。下面的示例将录制比特率设为 6Mbps:screenrecord 
    --bit-rate  6000000 /sdcard/demo.mp4
    --time-limit time     设置最大录制时长(以秒为单位)。默认值和最大值均为 180(3 分钟)。
    --rotate    将输出旋转 90 度。此功能处于实验阶段。
    --verbose   在命令行屏幕显示日志信息。如果您不设置此选项,则该实用程序在运行时不会显示任何信息。
    adb 基本命令

    >待补充

    #1. adb logcat #用来抓取log信息进行bug跟踪。命令格式如下:
    adb logcat [option] [filter-spec]
    
    (1)logcat 命令选项说明:
    
    -v #日志输出格式,输出格式列表:
    
    brief:显示优先级、标记以及发出消息的进程的 PID。
    long:显示所有元数据字段,并使用空白行分隔消息。
    process:仅显示 PID。
    raw:显示不包含其他元数据字段的原始日志消息。
    tag:仅显示优先级和标记。
    thread::旧版格式,显示优先级、PID 以及发出消息的线程的 TID。
    threadtime(默认值):显示日期、调用时间、优先级、标记、PID 以及发出消息的线程的 TID。
    time:显示日期、调用时间、优先级、标记以及发出消息的进程的 PID。
    
    
    -b #加载一个日志缓冲区,参数选项如下:
    
    radio:查看包含无线装置/电话相关消息的缓冲区。
    events:查看已经过解译的二进制系统事件缓冲区消息。
    main:查看主日志缓冲区(默认),不包含系统和崩溃日志消息。
    system:查看系统日志缓冲区(默认)。
    crash:查看崩溃日志缓冲区(默认)。
    all:查看所有缓冲区。
    default:报告 main、system 和 crash 缓冲区。
    
    -s #设置默认的过滤级别是silent,如指定 '* :s'
    -f #将log输出到指定的文件,默认为标准输出
    -r #循环log的字节数,默认值是16,需要和-f选项一起使用
    -n #设置循环log的最大数目,默认值是4,需要和-r选项一起使用
    -g #打印日志缓冲区的大小并退出
    -c #清除缓冲区中全部日志并退出(清除完后可以使用-g查看缓冲区)
    -d #将缓冲区的Log转存到屏幕中然后退出(不阻塞)
    -G #指定日志缓冲区大小
    
    #
    adb logcat #表示时时抓取整个手机的log信息并在命令提示窗口输出信息。
    adb logcat >D:log.txt #将实时抓取log信息并保存到本地log.txt文件
    adb logcat -v time >D:log.txt #生成输出格式为 time 的log信息
    adb logcat -b radio >D:log.txt #获取网络射频信息。
    adb logcat -b events >D:log.txt #获取事件信息
    adb logcat -v time -b main -b radio -b system >logcat.txt #获取log信息加上时间,显示主要缓冲区以及电话和系统相关日志
    adb logcat -G 5M #指定5M缓冲区大小
    adb logcat -v thread #生成输出格式为 thread 的log信息
    
    (2)logcat 命令过滤项说明
    -V #Verbose 显示全部信息
    -D #Debug 显示调试信息
    -I #Information 显示一般信息
    -W #Warning 显示警告信息
    -E #Error 显示错误信息
    -F #Fatal 显示严重错误信息
    
    #
    adb logcat *:E >E:	est_toolsadblog-list	ext1.log #输出E级以上的日志信息
    
    此外adb logcat 可以使用管道来设置过滤内容,还可以结合匹配正则表达过滤内容
    adb bugreport #获取bugreport信息。bugreport记录android启动过程的log,以及启动后的系统状态,包括进程列表、内存信息、VM信息等。
    adb shell dumpsys dropbox --print #获取dropbox信息。记录出现过的异常等信息,用于分析crash、重启等。
    adb pull /data/anr/ . #获取anr信息。系统或者应用无响应时抓取的信息文件。
    
    2.其他日志相关命令
    ctrl+c #退出日志抓取
    adb logcat

    日志相关分析:
    1.logcat抓取的日志中,Crash问题->搜关键字:FATAL EXCEPTION;无响应(ANR)问题->搜关键字ANR in
    2.测试时出现ANR问题时需要提交抓取的日志文件和/data/system/dropbox下的adta_app_anr@xxxxxx.txt.gz文件或/data/anr/目录下的anr_2021-xx-xx-xx-xx-xx-xxx文件,方便开发定位问题,有多个anr日志时,可用ls -l命令,查看该目录下文件的详细信息,然后根据创建时间,找到目标文件,用adb pull命令拷贝到PC端

    >待补充

    adb 提供了shell终端,通过shell终端可以在模拟器或者设备上运行各种命令。这些命令是linux shell的一个子集,在手机的目录/system/bin下,很多命令跟bash shell是一样的,譬如ls、pwd、cat等。
    #可以通过adb shell命令名来使用这些命令,比如:adb shell ls,也可以先用命令:adb shell进入设备或者模拟器的shell终端,再使用相应的命令。当设备在shell状态下,可以用exit 来退出终端。
    
    #adb shell常见命令用法
    1. adb shell dumpsys battery     #查看电池电量的相关信息
    
    adb shell dumpsys battery     #输入该命令后出现如下信息
    Current Battery Service state:
      AC powered: false     #表示电源供电
      USB powered: false     #表示使用USB供电
      Wireless powered: false
      Max charging current: 0
      Max charging voltage: 0
      Charge counter: 0
      status: 4     #表示电池电量,5表示电池电量是满的
      health: 2     #电池健康状态,有6个值,分别是0和1表示未知状态,2表示良好,3表示过热,4表示损坏,5表示过压
      present: false     #表示手机上是否有电池
      level: 79     #表示电池剩余量79%
      scale: 100     #表示电池电量最大值是100%
      voltage: 7956     #表示当前电池电压值
      temperature: 0     #表示当前电池温度值
      technology: Li-ion     #Li-ion为电池技术标准,Li-ion表示锂电池
    
    2. adb shell dumpsys wifi   #查看wifi网络信息
    
    3.adb shell dumpsys meminfo     #查看所有应用运行过程中占用内存情况
    
    4.adb shell dumpsys cpuinfo     #查看CPU的动态占用率,按CPU的使用率从大到小排列
     
    5.adb shell top -m 5 -n 10 -s cpu #查看前5的CPU占用进程,-m:显示的进程数量,-n:数据的刷新次数,-s:按什么方式排列,-d:刷新时间间隔,默认为5S
    
    6.adb shell dumpstate     #查看系统当前状态信息。信息内容包括:系统构建版本信息、网络相关信息、内核相关信息、运行时间信息、内存使用情况、CPU使用情况、进程相关信息等。
    
    7.adb shell dmesg     #查看内核日志信息
    
    8.adb shell df     #查看手机系统各个分区信息
    
    9.adb shell getprop gsm.network.type     #获取手机网络类型信息
    
    10.adb shell getprop ro.build.version.release     #获取手机系统版本信息
    
    11.adb shell cat /proc/version     #获取设备内核版本信息
    
    12.adb get -serialno     #获取设备序列号
    
    13.adb get -state     #查看设备或模拟器的当前状态,其中device表示已连接
    
    14.adb shell am (Activity Manager)    #模拟一些操作设备动作
    
    15.adb shell pm (package manager)     #查询设备上的应用
    adb shell

     adb用户手册官方链接:https://developer.android.google.cn/studio/command-line/adb?hl=zh-cn

    >>>>>待续

  • 相关阅读:
    oracle 7月份更新CVE-2020-14645 T3反序列化 Weblogic12.2.1.4.0 JNDI注入 Payload 复现&利用
    oracle 7月份更新 CVE-2020-14625 复现&利用
    Citrix Systems产品安全漏洞 CVE-2020-8193, CVE-2020-8195 and CVE-2020-8196 poc
    cve-2020-5902 RCE的payload以及绕过方式
    cve-2020-5902 BIG-IP RCE漏洞复现&exp
    Tomcat基于Servlet的无文件webshell的相关技术研究
    JBOSS 无文件webshell的技术研究
    weblogic 无文件webshell的技术研究
    java 获取包下的类 find all classes in a package
    冰蝎改造之适配基于tomcat Filter的无文件webshell
  • 原文地址:https://www.cnblogs.com/wuxunyan/p/14713355.html
Copyright © 2020-2023  润新知