Android Debug Bridge

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Android Debug Bridge
Тип утилита командной строки[вд]
Написана на C++
Операционные системы Windows, Linux и macOS
Репозиторий android.googlesource.com/…
Лицензия Apache License 2.0
Сайт developer.android.com/st…
Логотип Викисклада Медиафайлы на Викискладе
Работа с 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].

Примечания

[править | править код]
  1. Lauren Darcey, Shane Conder. Android wireless application development. — Upper Saddle River, NJ: Addison-Wesley, 2012. — ISBN 978-0-321-81383-1, 978-0-321-81384-8. Архивировано 30 мая 2022 года.
  2. Things You Can Do with Android's adb Command (англ.). dummies. Дата обращения: 30 мая 2022.
  3. Chuck Easttom. In-depth guide to mobile device forensics. — 2022. — ISBN 978-0-367-63300-4, 978-0-367-63298-4. Архивировано 30 мая 2022 года.
  4. Jack Wallen. How to create a full backup of your Android device without root (амер. англ.). TechRepublic (6 марта 2015). Дата обращения: 30 мая 2022. Архивировано 24 января 2016 года.
  5. 1 2 3 4 Rajaram Regupathy. Unboxing Android USB: a hands-on approach with real World examples. — 2014. — ISBN 978-1-4302-6209-1.
  6. Ivan Morgillo, Stefano Viola. Learning Embedded Android N Programming. — Packt Publishing Ltd, 2016-07-29. — 282 с. — ISBN 978-1-78528-328-4. Архивировано 30 мая 2022 года.
  7. Google releases Android SDK (амер. англ.). Macworld. Дата обращения: 30 мая 2022. Архивировано 10 сентября 2021 года.
  8. Turning it up to 11: Android 11 for developers (англ.). Android Developers Blog. Дата обращения: 30 мая 2022. Архивировано 17 сентября 2021 года.
  9. Behavior changes: Apps targeting Android 12 (англ.). Android Developers. Дата обращения: 30 мая 2022. Архивировано 24 мая 2022 года.
  10. Joshua J Drake, Zach Lanier, Collin Mulliner, Pau Oliva, Stephen A Ridley. Android hacker's handbook. — Indianapolis, IN: Wiley, 2014. — ISBN 978-1-118-60861-6, 978-1-118-92225-5, 978-1-306-63810-4.
  11. Tom Mendelsohn. Google plugs severe Android vulnerability that exposed devices to spying (амер. англ.). Ars Technica (9 января 2017). Дата обращения: 30 мая 2022. Архивировано 10 сентября 2021 года.
  12. Evan Schuman. This Vultur app takes malicious to the next level (англ.). Computerworld (4 августа 2021). Дата обращения: 30 мая 2022. Архивировано 10 сентября 2021 года.