Ir al contenido

Android Debug Bridge

De Wikipedia, la enciclopedia libre
Android Debug Bridge
Información general
Tipo de programa Herramienta de desarrollo de software
Autor Google
Licencia Licencia Apache 2.0
Información técnica
Programado en C++
Enlaces

El Android Debug Bridge (comúnmente abreviado como adb) es una herramienta de programación utilizada para la depuración de dispositivos basados en Android. El demonio en el dispositivo Android se conecta con el servidor en la PC host a través de USB o TCP, que se conecta al cliente utilizado por el usuario final a través de TCP. Disponible como software de código abierto bajo la Licencia Apache por Google desde 2007, sus características incluyen un intérprete de comandos y la posibilidad de realizar copias de seguridad. El software adb está disponible para Windows, Linux y macOS. Ha sido utilizado de forma indebida por botnets y otros malware, para los cuales se desarrollaron mitigaciones como la autenticación RSA y la lista blanca de dispositivos.

Características

[editar]
Monitor de Dispositivos Android

Las características de adb incluyen la copia de archivos desde la computadora host,[1]​ instalación de aplicaciones, visualización de la salida de logcat, obtención de un shell,[2]​ y reinicio en Modo EDL de Qualcomm.[3]​ Por ejemplo, las aplicaciones de Android pueden guardarse con el comando copia de seguridad en un archivo.[4]​ También incluye soporte para el Protocolo de Depuración de Java.[5]

Se han desarrollado algunas interfaces gráficas. El Monitor de Dispositivos Android en Android Studio puede usarse para recuperar información de un dispositivo Android.[6]

El método de Android para instalar archivos APK en un dispositivo se ha utilizado para cargar aplicaciones no oficiales en Windows Subsystem for Android[7]​ y en la máquina virtual de Android de Chrome OS.[8]

Shizuku permite que un teléfono Android se conecte a su propio ADB cuando está conectado a una red inalámbrica. La aplicación está disponible gratuitamente en Google Play Store.[9]

Historia de desarrollo

[editar]

El Kit de Desarrollo de Software de Android (SDK) fue lanzado por primera vez en 2007.[10]​ Desde 2017, Google permitió descargar adb por separado del SDK de Android.[11]

En 2015, Microsoft lanzó un emulador de Android que puede conectarse al cliente adb.[12]​ En 2016, para Android Studio 2.0, se mejoró el rendimiento en 5 veces para la instalación de aplicaciones y la transferencia de archivos a través de adb.[13]​ Para facilitar el uso de Android Things, en 2017 se creó un envoltorio alrededor de los comandos manuales de adb.[14]​ Para Android 11 en 2020, Google añadió instalaciones incrementales de adb.[15]​ En 2020, se integró adb por Wi-Fi en Android Studio para macOS.[16]​ En 2021, para Android 12, el comando adb backup fue limitado para que la copia de datos de usuario de aplicaciones sea opcional mediante una configuración de manifiesto por aplicación[17]​ tras ser obsoleto en Android 10 junto con adb restore.[18]​ Fuchsia será compatible con adb de forma retroactiva. Será reemplazado por fx y ffx.[19]

Configuración

[editar]
Para habilitar la depuración USB en el dispositivo Android, debe activarse en la ventana de «configuraciones de desarrollador»
Para habilitar la depuración USB en el dispositivo Android, debe activarse en la ventana de «configuraciones de desarrollador»  
Tras conectar el dispositivo a la computadora host, el usuario debe verificar la huella digital de la clave RSA de la computadora host
Tras conectar el dispositivo a la computadora host, el usuario debe verificar la huella digital de la clave RSA de la computadora host  

Computadora host

[editar]

Para Windows, el SDK de Android contiene el binario adb.exe que puede extraerse e instalarse.[20]​ How-To Geek recomienda añadir la carpeta que contiene los binarios a la variable de entorno PATH.[21]

En Ubuntu, adb puede instalarse con el paquete android-tools-adb.[22]​ Para Debian, se recomienda instalar también el paquete android-sdk-platform-tools-common junto con el paquete adb, que instala las reglas udev que permiten ejecutar la herramienta sin permisos de root.[23]​ Para macOS y otras distribuciones de Linux, las herramientas de plataforma pueden descargarse y la variable PATH puede modificarse en bashrc.[24]

Dispositivo Android

[editar]

En Android 4.2.2 o posterior (API nivel 17), se muestra un diálogo con una huella digital RSA que el usuario debe aceptar. Esto protege contra computadoras que exploten el mecanismo de depuración sin el consentimiento del usuario del dispositivo.[25]​ A partir de Android 4.2, las configuraciones de desarrollador están ocultas por defecto. Presionar siete veces el número de compilación en el menú «Acerca de» las hace visibles al usuario. Después, la opción de depuración USB puede habilitarse.[26]​ Algunos proveedores de Android tienen procedimientos diferentes para habilitarlo. Por ejemplo, Huawei requiere ingresar un código PIN antes de que adb pueda habilitarse.

Si la pantalla táctil de un dispositivo Android está rota, es posible conectar un ratón al dispositivo usando USB On-The-Go y habilitar la depuración USB.[27][28]

Arquitectura

[editar]

El protocolo adb puede transportarse a través de USB o Wi-Fi mediante TCP. Utiliza una arquitectura cliente-servidor. Hay dos protocolos diferentes en uso. El primero es entre el cliente y el servidor, y el segundo es entre el servidor y el demonio. El demonio adb está implementado en C y se encuentra en el espacio de usuario de Android. El demonio es facilitado por el marco USB de Android, UsbDeviceManager y UsbDebuggingManager.[5]

Protocolo cliente ↔ servidor

[editar]

El modo de comunicación entre el cliente y el servidor es un socket TCP. El servidor escucha en un puerto, al que el cliente debe enviar una solicitud. La solicitud contiene un campo inicial de 4 bytes en ASCII y una carga útil. La carga útil comienza con la palabra «host», para indicar que debe enviarse al servidor. El servidor puede responder con OKAY o FAIL para indicar el estado, combinado con una carga útil opcional y su longitud.[5]

Protocolo servidor ↔ demonio

[editar]

Los mensajes enviados desde el servidor consisten en un encabezado de 24 bytes, con los siguientes campos:[5]

  • Comando
  • Primer argumento
  • Segundo argumento
  • Longitud de la carga útil, 0 o superior
  • CRC-32 de la carga de datos
  • Valor mágico, calculado mediante comando XOR 0xFFFFFFFF

Seguridad

[editar]

Hasta Android 2.2, Android era vulnerable al exploit «RageAgainstTheCage». El demonio adb no verificaba el valor de retorno de la llamada al sistema setuid al reducir privilegios. El exploit bifurca procesos hasta que falla debido al agotamiento de los identificadores de proceso. Cuando el demonio se cuelga y se reinicia, no puede iniciar un nuevo proceso con privilegios reducidos y sigue ejecutándose como root. Entonces, adb proporcionaba un shell de root.[29]​ En 2017, se reveló una vulnerabilidad de seguridad que explotaba ADB para tomar el control del módem integrado. El ataque requería que adb ya estuviera habilitado y autorizado, aunque se encontraron algunos métodos alternativos.[30]

Varias familias de malware como ADB.Miner, Ares, IPStorm, Fbot y Trinity han escaneado internet en busca de la disponibilidad pública de la interfaz adb e instalado malware en esos dispositivos.[31]​ adb también puede usarse para eliminar malware, al iniciar en modo seguro y ejecutar el comando adb uninstall.[32]

Referencias

[editar]
  1. Darcey, Lauren (2012). Android wireless application development [Desarrollo de aplicaciones inalámbricas para Android]. Shane Conder (3ª edición). Upper Saddle River, NJ: Addison-Wesley. ISBN 978-0-321-81383-1. OCLC 749852462. Archivado desde el original el 26 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  2. «Things You Can Do with Android's adb Command» [Cosas que puedes hacer con el comando adb de Android] (en inglés). Archivado desde el original el 15 de mayo de 2018. Consultado el 10 de julio de 2025. 
  3. EASTTOM, CHUCK (2021). An In-Depth Guide to Mobile Device Forensics [Guía detallada sobre análisis forense de dispositivos móviles]. [S.l.]: CRC PRESS. p. 72. ISBN 978-0-367-63300-4. OCLC 1250310301. Archivado desde el original el 26 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  4. Jack Wallen (6 de marzo de 2015). «How to create a full backup of your Android device without root» [Cómo crear una copia de seguridad completa de tu dispositivo Android sin root]. Archivado desde el original el 24 de enero de 2016. Consultado el 10 de julio de 2025. 
  5. a b c d Regupathy, Rajaram (2014). Unboxing Android USB: a hands-on approach with real World examples [Desembalando Android USB: un enfoque práctico con ejemplos del mundo real]. Berkeley, CA. ISBN 978-1-4302-6209-1. OCLC 880673864. Archivado desde el original el 26 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  6. Morgillo, Ivan; Viola, Stefano (2016). Learning embedded Android N programming: create the perfectly customized system by unleashing the power of Android OS on your embedded device [Programación embebida de Android N: crea el sistema perfectamente personalizado liberando el poder del SO Android en tu dispositivo embebido]. Birmingham, Reino Unido. p. 89. ISBN 9781785283284. OCLC 1020708322. Archivado desde el original el 26 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  7. «How to sideload Android apps on Windows 11» [Cómo cargar aplicaciones de Android en Windows 11]. 23 de enero de 2022. Consultado el 10 de julio de 2025. 
  8. «How to sideload apps to a Chromebook» [Cómo cargar aplicaciones en una Chromebook]. 5 de marzo de 2023. Consultado el 10 de julio de 2025. 
  9. «User manual | Shizuku» [Manual del usuario | Shizuku]. Consultado el 10 de julio de 2025. 
  10. «Google releases Android SDK» [Google lanza el SDK de Android] (en inglés estadounidense). Archivado desde el original el 10 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  11. «Google makes ADB, fastboot, and other platform tools available without full SDK or Android Studio download» [Google hace que ADB, fastboot y otras herramientas de plataforma estén disponibles sin descargar el SDK completo o Android Studio] (en inglés estadounidense). 5 de enero de 2017. Archivado desde el original el 10 de abril de 2021. Consultado el 10 de julio de 2025. 
  12. Vasile, Cosmin. «Microsoft Releases Android Emulator and It's Supposed to Be Faster than Google's» [Microsoft lanza un emulador de Android que se supone es más rápido que el de Google] (en inglés). Archivado desde el original el 10 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  13. «Android Studio 2.0 - Beta» [Android Studio 2.0 - Beta] (en inglés). Archivado desde el original el 10 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  14. «Android Things Developer Preview 6» [Vista previa para desarrolladores de Android Things 6] (en inglés). Archivado desde el original el 10 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  15. «Turning it up to 11: Android 11 for developers» [Subiendo al 11: Android 11 para desarrolladores] (en inglés). Archivado desde el original el 17 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  16. «Announcing Android Studio Arctic Fox (2020.3.1) & Android Gradle plugin 7.0» [Anunciando Android Studio Arctic Fox (2020.3.1) y el plugin Gradle de Android 7.0] (en inglés). Archivado desde el original el 12 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  17. «Behavior changes: Apps targeting Android 12 | Android 12 Beta» [Cambios de comportamiento: Aplicaciones dirigidas a Android 12 | Beta de Android 12] (en inglés). Archivado desde el original el 28 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  18. «Google Considers Removing Android ADB Backup and Restore» [Google considera eliminar la copia de seguridad y restauración de ADB en Android]. Consultado el 10 de julio de 2025. 
  19. Bradshaw, Kyle (26 de agosto de 2022). «Google wants to make Fuchsia devices manageable with Android's ADB tool» [Google quiere hacer que los dispositivos Fuchsia sean gestionables con la herramienta ADB de Android] (en inglés estadounidense). Consultado el 10 de julio de 2025. 
  20. Harwani, B. M. (2013). PhoneGap build: developing cross platform mobile applications in the cloud [PhoneGap build: desarrollando aplicaciones móviles multiplataforma en la nube]. Boca Raton. p. 38. ISBN 978-1-4665-8975-9. OCLC 862745697. Archivado desde el original el 7 de marzo de 2022. Consultado el 10 de julio de 2025. 
  21. Hoffman, Chris; Fedewa, Joe (4 de septiembre de 2021). «How to Install and Use ADB, the Android Debug Bridge Utility» [Cómo instalar y usar ADB, la utilidad de Android Debug Bridge] (en inglés estadounidense). Archivado desde el original el 18 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  22. Smyth, Neil (2020). «7». Android Studio 4.0 Development Essentials - Java Edition: Developing Android Apps Using Android Studio 4.0, Java and Android Jetpack. [Esenciales de desarrollo de Android Studio 4.0 - Edición Java: Desarrollo de aplicaciones Android usando Android Studio 4.0, Java y Android Jetpack]. Cary. ISBN 978-1-951442-21-7. OCLC 1190906409. Archivado desde el original el 26 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  23. «Debian -- Details of package adb in bullseye» [Debian -- Detalles del paquete adb en bullseye]. Archivado desde el original el 8 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  24. «How to Install Android Debug Bridge (ADB) and Fastboot» [Cómo instalar Android Debug Bridge (ADB) y Fastboot] (en inglés). Archivado desde el original el 30 de enero de 2022. Consultado el 10 de julio de 2025. 
  25. «Run apps on a hardware device» [Ejecutar aplicaciones en un dispositivo físico] (en inglés). Archivado desde el original el 8 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  26. Wallen, Jack. «How to enable Developer options in Android 4.2» [Cómo habilitar las opciones de desarrollador en Android 4.2] (en inglés). Archivado desde el original el 9 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  27. Ogubuike, Udochi (9 de agosto de 2019). «How to enable USB debugging mode on Android» [Cómo habilitar el modo de depuración USB en Android] (en inglés estadounidense). Archivado desde el original el 17 de septiembre de 2019. Consultado el 10 de julio de 2025. 
  28. Aranzulla, Salvatore. «Come attivare debug USB» [Cómo activar la depuración USB] (en it-IT). Archivado desde el original el 9 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  29. Drake, Joshua J. (2014). Android hacker's handbook [Manual del hacker de Android]. Zach Lanier, Collin Mulliner, Pau Oliva, Stephen A. Ridley, Georg Wicherski. Indianapolis, IN: Wiley. p. 75. ISBN 978-1-118-60861-6. OCLC 875820167. Archivado desde el original el 26 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  30. Mendelsohn, Tom (9 de enero de 2017). «Google plugs severe Android vulnerability that exposed devices to spying» [Google corrige una grave vulnerabilidad de Android que exponía dispositivos al espionaje] (en inglés estadounidense). Archivado desde el original el 10 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  31. Cimpanu, Catalin. «Android devices ensnared in DDoS botnet» [Dispositivos Android atrapados en una botnet DDoS] (en inglés). Archivado desde el original el 10 de septiembre de 2021. Consultado el 10 de julio de 2025. 
  32. Schuman, Evan. «This Vultur app takes malicious to the next level» [Esta aplicación Vultur lleva el malicioso al siguiente nivel]. Computerworld (en inglés). Archivado desde el original el 10 de septiembre de 2021. Consultado el 10 de julio de 2025. 

Enlaces externos

[editar]