ADB详细(从下载安装到灵活运用)

ADB下载

Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip

Mac版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip

Linux版本:https://dl.google.com/android/repository/platform-tools-latest-linux.zip

安装步骤

解压文件夹

配置环境变量

在环境变量中添加adb路径。

验证是否安装成功

win+r输入cmd

输入adb 

输入adb --version

 什么是ADB

ADB(Android Debug Bridge)是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在Android SDK/platform-tools中找到 adb 工具或下载ADB Kits。

ADB用处

ADB是Android SDK里的一个工具,用这个工具可以直接操作管理Android模拟器或者真实的Android设备。它的主要功能有:

1.在设备上运行Shell命令;将本地APK软件安装至模拟器或Android设备;

2.管理设备或手机模拟器上的预定端口;

3.在设备或手机模拟器上复制或粘贴文件。

ADB是一个客户端-服务器程序,包含三个组件:

客户端:该组件发送命令。客户端在开发计算机上运行。可以通过发出adb命令从命令行终端调用客户端。

后台程序:该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。

服务器:该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。

ADB命令语法

adb命令的基础语法:

adb [-d|-e|-s <serial-number>] <command>

单一设备/模拟器连接

如果只有一个设备/模拟器连接时,可以省略掉[-d|-e|-s <serial-number>]这一部分,直接使用adb <command>

多个设备/模拟器连接

如果有多个设备/模拟器连接,则需要为命令指定目标设备,下表是指定目标设备的命令:

参数 含义
-d 指定当前唯一通过USB连接的Android设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s <serial-number>指定相应设备序列号的设备/模拟器为命令目标
在多个设备/模拟器连接的情况下较常用的是-s <serial-number>参数,serial-number是指设备的序列号,可以通过adb devices命令获取

ADB常用命令

基本命令

查看adb的版本信息

adb version

启动adb

adb start-server

一般不需要执行adb start-server命令,因为在运行adb命令时如果发现adb server没有启动会自动调用。

停止adb

adb kill-server

使用root权限运行adb

adb root

指定adb server的网络端口

adb -P <port> start-server

ADB的默认端口号为5037。

查询已连接的设备/模拟器列表

adb devices

设备连接管理

USB连接

通过USB连接使用ADB需要以下步骤:

  1. 确定硬件状态正常(包括Android设备处于正常开机状态,USB连接线和各种接口完好)。
  2. Android设备的开发者选项和USB调试模式已经开启(在[设置]-[开发者选项]-[USB调试]打开USB调试)。
  3. 确认设备驱动状态正常(安装ADB驱动程序)。
  4. 通过USB线连接点好和设备后确认状态。
  5. 通过adb devices命令查看设备连接情况。

WIFI连接(需要USB线)

借助USB通过WIFI连接来正常使用ADB需要一下步骤:

  1. 将Android设备与要运行adb的电脑连接到同一个WIFI。
  2. 将设备与电脑通过USB线连接(可以通过adb devices命令查看设备连接情况)。
  3. 通过adb tcpip 5555命令让设备在5555端口监听TCP/IP连接。
  4. 断开USB连接。
  5. 找到设备的IP地址(可以在[设置]-[关于手机]-[状态信息]-[IP地址]查看IP地址)。
  6. 通过adb connect <device-ip-address>命令使用IP地址将Android设备与电脑连接。
  7. 通过adb devices命令查看设备连接情况。
  8. 使用完毕后可通过adb disconnect <device-ip-address>命令断开无线连接。

WIFI连接(无需USB线)

注意:需要使用root权限。

不借助USB通过WIFI连接来使用ADB需要以下步骤:

        1.在Android设备上安装一个终端模拟器(可以通过Terminal Emulator for Android Downloads下载)。

        2.将Android设备与要运行adb的电脑连接到同一个WiFI。

        3.打开Android设备上的终端模拟器,依次运行命令:

su
setprop service.adb.tcp.port 5555

        4.找到设备的IP地址([设置]-[关于手机]-[状态信息]-[IP地址])。

        5.通过adb connect <device-ip-address>命令使用IP地址将Android设备与电脑连接。

        6.通过adb devices命令查看设备连接情况。 

WIFI连接转为USB连接

通过adb usb命令以USB模式重新启动ADB:

adb usb

 注意:如果之前通过WIFI连接需要先断开连接(adb disconnect <device-ip-address>),再执行adb usb才可以。

应用管理

查看应用列表

查看应用列表的基本命令格式是:

adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]

adb shell pm list packages后面可以跟一些可选参数进行过滤。 

参数 显示列表
显示所有应用
-f 显示应用关联的apk文件
-d 显示disabled的应用
-e 显示enabled的应用
-s 显示系统应用
-3 显示第三方应用
-i 显示应用的installer
-u 显示已卸载应用
<filter> 包名包含<filter>字符串

查看所有应用

adb shell pm list packages

 查看第三方应用

adb shell pm list packages -3

根据包名模糊查询

比如我们要查询包含xiaomi字符串的应用列表:

adb shell pm list packages xiaomi

安装应用

安装应用的基本命令格式是:

adb install [-l] [-r] [-t] [-s] [-d] [-g] <apk-file>

adb install后面可以跟一些参数来控制安装APK的行为: 

参数 含义
-l 将应用安装到保护目录/mnt/asec
-r 允许覆盖安装
-t 运行安装AndroidManifest.xml里application指定android:testOnlt="true"的应用
-s 将应用安装到sdcard
-d 允许降级覆盖安装
-g 授予所有运行时权限

运行命令后可以看到输出内容,包含安装进度和状态:

Success:代表安装成功。

Failure:代表安装是啊比。APK安装失败的情况有很多,Failure状态之后会有安装失败输出代码。常见的安装失败输代码、含义和解决办法:

输出代码 含义 解决办法
INSTALL_FAILED_ALREADY_EXISTS 应用已经存在,或卸载了但没卸载干净 adb install 时使用 -r 参数,或者先 adb uninstall 再安装
INSTALL_FAILED_INVALID_APK 无效的 APK 文件
INSTALL_FAILED_INVALID_URI 无效的 APK 文件名 确保 APK 文件名里无中文
INSTALL_FAILED_INSUFFICIENT_STORAGE
No space left on device
空间不足 清理空间
INSTALL_FAILED_DUPLICATE_PACKAGE 已经存在同名程序
INSTALL_FAILED_NO_SHARED_USER 请求的共享用户不存在
INSTALL_FAILED_UPDATE_INCOMPATIBLE 以前安装过同名应用,但卸载时数据没有移除;或者已安装该应用,但签名不一致 先 adb uninstall 再安装
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 请求的共享用户存在但签名不一致
INSTALL_FAILED_MISSING_SHARED_LIBRARY 安装包使用了设备上不可用的共享库
INSTALL_FAILED_REPLACE_COULDNT_DELETE 替换时无法删除
INSTALL_FAILED_DEXOPT dex 优化验证失败或空间不足
INSTALL_FAILED_OLDER_SDK 设备系统版本低于应用要求
INSTALL_FAILED_CONFLICTING_PROVIDER 设备里已经存在与应用里同名的 content provider
INSTALL_FAILED_NEWER_SDK 设备系统版本高于应用要求
INSTALL_FAILED_TEST_ONLY 应用是 test-only 的,但安装时没有指定 -t 参数
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE 包含不兼容设备 CPU 应用程序二进制接口的 native code
INSTALL_FAILED_MISSING_FEATURE 应用使用了设备不可用的功能
INSTALL_FAILED_CONTAINER_ERROR 1. sdcard 访问失败;2. 应用签名与 ROM 签名一致,被当作内置应用。 1. 确认 sdcard 可用,或者安装到内置存储;2. 打包时不与 ROM 使用相同签名。
INSTALL_FAILED_INVALID_INSTALL_LOCATION 1. 不能安装到指定位置;2. 应用签名与 ROM 签名一致,被当作内置应用。 1. 切换安装位置,添加或删除 -s 参数;2. 打包时不与 ROM 使用相同签名。
INSTALL_FAILED_MEDIA_UNAVAILABLE 安装位置不可用 一般为 sdcard,确认 sdcard 可用或安装到内置存储
INSTALL_FAILED_VERIFICATION_TIMEOUT 验证安装包超时
INSTALL_FAILED_VERIFICATION_FAILURE 验证安装包失败
INSTALL_FAILED_PACKAGE_CHANGED 应用与调用程序期望的不一致
INSTALL_FAILED_UID_CHANGED 以前安装过该应用,与本次分配的 UID 不一致 清除以前安装过的残留文件
INSTALL_FAILED_VERSION_DOWNGRADE 已经安装了该应用更高版本 使用-d参数
INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE 已安装 target SDK 支持运行时权限的同名应用,要安装的版本不支持运行时权限
INSTALL_PARSE_FAILED_NOT_APK

指定路径不是文件,或不是以.apk结尾

INSTALL_PARSE_FAILED_BAD_MANIFEST 无法解析的 AndroidManifest.xml 文件
INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION 解析器遇到异常
INSTALL_PARSE_FAILED_NO_CERTIFICATES 安装包没有签名
INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES 已安装该应用,且签名与 APK 文件不一致 先卸载设备上的该应用,再安装
INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING 解析 APK 文件时遇到 CertificateEncodingException
INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME manifest 文件里没有或者使用了无效的包名
INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID manifest 文件里指定了无效的共享用户 ID
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解析manifest文件时遇到结构性错误
INSTALL_PARSE_FAILED_MANIFEST_EMPTY 在 manifest 文件里找不到找可操作标签(instrumentation 或 application)
INSTALL_FAILED_INTERNAL_ERROR 因系统问题安装失败
INSTALL_FAILED_USER_RESTRICTED 用户被限制安装应用
INSTALL_FAILED_DUPLICATE_PERMISSION 应用尝试定义一个已经存在的权限名称
INSTALL_FAILED_NO_MATCHING_ABIS 应用包含设备的应用程序二进制接口不支持的 native code
INSTALL_CANCELED_BY_USER 应用安装需要在设备上确认,但未操作设备或点了取消 在设备上同意安装
INSTALL_FAILED_ACWF_INCOMPATIBLE 应用程序与设备不兼容
INSTALL_FAILED_TEST_ONLY APK 文件是使用 Android Studio 直接 RUN 编译出来的文件 通过 Gradle 的 assembleDebug 或 assembleRelease 重新编译,或者 Generate Signed APK
does not contain AndroidManifest.xml
is not a valid zip file
无效的 APK 文件
Permission denied … sdcard … sdcard不可用
Offline 设备未连接成功 先将设备与 adb 连接成功
NoSQLMap是一款开源Python工具,可以帮助安全测试人员自动化对NoSQL数据库进行攻击测试。目前这款工具的漏洞利用程序围绕MongoDB,但是以后会支持更多的NoSQL数据库,如 CouchDB, Redis和Cassandra。NoSQLMap是一款Python编写的开源工具,常用于审计NoSQL数据库中的自动注入攻击、为了从数据库中揭露数据而利用NoSQL数据库或使用NoSQL的Web应用的默认配置弱点。它这样命名是为了几年Bernardo Damele和Miroslav创作的流行的SQL工具SQLmap,它的设计理念来源于Ming Chow在Defcon中发表的很棒的演讲-”Abusing NoSQL Databases”。该工具目前主要应用于MongoDB,但是它在未来的版本中还会支持其他基于NoSQL的平台,如CouchDB, Redis和Cassandra等。当前该项目的目的是为简单攻击MongoDB服务器和一些web应用提供渗透测试工具,以及用通过概念攻击来证明某NoSQL应用不会受到SQL注入。主要功能:自动化MongoDB和CouchDB数据库枚举和克隆攻击。通过MongoDB web应用提取数据库名称、用户和哈希密码。为使用默认访问和枚举版本的MongoDB和CouchDB数据库扫描子网或IP列表。字典攻击、暴力破解恢复的MongoDB和CouchDB的哈希密码。针对MongoClient的PHP应用程序参数注入攻击,返回所有数据库中的记录。Javascript函数变量转移和任意代码注入,返回所有数据库中的记录。类似于盲SQL注入的用于验证无来自应用程序的反馈的Javascript注入漏洞的时序攻击。使用方法启动./nosqlmap.py或python nosqlmap.py.基本菜单1-Set options (do this first) 2-NoSQL DB Access Attacks 3-NoSQL Web App attacks 4-Exit 标签:NoSQLMap
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值