Русская Википедия:Android Debug Bridge

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Программа

Файл:Android Debug Bridge in GNOME terminal.png
Работа с ADB в эмуляторе терминала GNOME

Android Debug Bridge (обычно сокращённо adb) — это инструмент программирования, используемый для отладки устройств на базе Android. Daemon на устройстве Android подключается к серверу на хост-компьютере через USB или TCP, который подключается к клиенту, используемому конечным пользователем, через TCP. Доступно как программное обеспечение с открытым исходным кодом под лицензией Apache License от Google с 2007 года, функции включают оболочку и возможность делать резервные копии. Программное обеспечение adb совместимо с Windows, Linux и macOS. Он использовался не по назначению ботнетами и другим вредоносным программным обеспечением, для которого были разработаны средства защиты, такие как аутентификация RSA и белый список устройств.

Функции

Возможности adb включают копирование файлов с главного компьютера, установку приложений, просмотр вывода logcat, получение оболочки Unix и перезагрузку в режиме Qualcomm EDL[1][2][3]. Например, приложения для Android можно сохранить с помощью команды резервного копирования в файл[4]. Он также включает поддержку протокола Java Debug Wire Protocol[5].

Доступны некоторые графические интерфейсы. Графический монитор устройств Android в Android Studio можно использовать для получения информации с устройства Android[6].

История развития

Комплект для разработки программного обеспечения Android (SDK) был впервые выпущен в 2007 году. С 2017 года Google позволяет загружать adb отдельно от Android SDK[7].

В 2015 году Microsoft выпустила эмулятор Android, который может подключаться к клиенту adb. В 2016 году для Android Studio 2.0 производительность установки приложений и загрузки файлов через adb была увеличена в 5 раз. Для упрощения использования Android Things в 2017 году была создана оболочка для ручных команд adb. Для Android 11 в 2020 году Google добавила инкрементную установку adb. В 2020 году adb Wi-Fi был интегрирован в Android Studio для macOS[8]. В 2021 году для Android 12 команда резервного копирования adb была ограничена, поэтому резервное копирование пользовательских данных из приложений осуществлялось с использованием конфигурации манифеста для каждого приложения[9].

Архитектура

Протокол adb можно передавать по USB или по Wi-Fi через TCP. Он использует клиент-серверную архитектуру. Используются два разных протокола. Первый — между клиентом и сервером, а второй — между сервером и доменом. Домен adb реализован на C и находится в пользовательском пространстве Android. Домен поддерживается инфраструктурой Android USB, UsbDeviceManager и UsbDebuggingManager[5].

Протокол клиент ↔ сервер[5]

Режим связи между клиентом и сервером — TCP-сокет. Сервер прослушивает порт, на который клиент должен отправить запрос. Запрос содержит 4-байтовое начальное поле в ASCII и полезную нагрузку. Полезная нагрузка начинается со слова host, чтобы указать, что её следует отправить на сервер. Затем сервер может ответить OKAY или FAIL, чтобы указать статус в сочетании с дополнительной полезной нагрузкой и длиной.

Протокол сервера ↔ Daemon[5]

Сообщения, отправляемые с сервера, состоят из заголовка длиной 24 байта со следующими полями:

  1. Команда
  2. Первый аргумент
  3. Второй аргумент
  4. Длина полезной нагрузки, 0 или выше
  5. CRC32 полезных данных
  6. Магическое значение, рассчитанное с помощью команды XOR 0xFFFFFFFF

Безопасность

До Android 2.2 Android был уязвим для эксплойта RageAgainstTheCage. Демон adb не проверял возвращаемое значение системного вызова setuid при сбросе привилегий. Эксплойт разветвляет процессы до тех пор, пока не произойдёт сбой из-за исчерпания идентификаторов процессов. Когда демон аварийно завершает работу и перезапускается, он не может запустить новый процесс с утраченными привилегиями и продолжает работать от имени пользователя root. Затем adb предоставил корневую оболочку[10].

В 2017 году была обнаружена уязвимость в системе безопасности, которая использовала ADB для захвата встроенного модема. Атака требовала, чтобы adb был уже включён и авторизован, хотя были доступны некоторые обходные пути[11]. Различные семейства вредоносных программ, такие как ADB. Miner, Ares, IPStorm, Fbot и Trinity, сканировали Интернет на наличие общедоступного интерфейса adb и устанавливали вредоносные программы на эти устройства. adb также можно использовать для удаления вредоносного ПО, загрузившись в безопасном режиме и выполнив команду удаления adb[12].

Примечания

Шаблон:Примечания