Android Debug Bridge
Android Debug Bridge software | |
---|---|
![]() | |
![]() | |
Genere | |
Sviluppatore | |
Ultima versione | 34.0.1 (Marzo 2023) |
Sistema operativo | Microsoft Windows GNU/Linux macOS |
Linguaggio | C++ |
Licenza | Apache 2.0 (licenza libera) |
Sito web | developer.android.com/studio/command-line/adb |
Android Debug Bridge (comunemente abbreviato in adb) è uno strumento di programmazione utilizzato per il debug dei dispositivi basati su Android. Sul dispositivo Android viene eseguito un demone che si connette a un server installato sul PC host via USB o TCP, che a sua volta si connette al client utilizzato dall'utente finale tramite TCP. Reso disponibile come software open source da Google con licenza Apache dal 2007, adb mette a disposizione una shell e la funzionalità di backup dei dati. Il programma è disponibile per Windows, Linux e macOS. In passato è stato utilizzato in modo improprio da botnet e altri tipi di malware, per i quali sono state sviluppate contromisure come l'autenticazione RSA e la possibilità di definire una whitelist di dispositivi autorizzati.
Caratteristiche
[modifica | modifica wikitesto]
Le funzionalità di adb comprendono la copia di file dal computer host,[1] l'installazione di applicazioni, la visualizzazione dell'output di logcat, l'accesso a una shell Unix,[2] e il riavvio in modalità Qualcomm EDL.[3] Ad esempio, le applicazioni Android possono essere salvate tramite il comando backup
in un file.[4] Include anche il supporto per il protocollo Java Debug Wire.[5]
Sono state rese disponibili alcune interfacce grafiche. L'Android Device Monitor, fornito all'interno di Android Studio, permette di ottenere informazioni dettagliate da un dispositivo Android.[6]
Il metodo di Android per installare file APK su un dispositivo è stato utilizzato per installare manualmente applicazioni non ufficiali su Windows Subsystem for Android[7] e sulla macchina virtuale Android di Chrome OS.[8]
Shizuku consente a un telefono Android di collegarsi al proprio ADB quando è connesso a una rete wireless. L'applicazione è disponibile gratuitamente su Google Play Store.[9]
Storia
[modifica | modifica wikitesto]L'Android Software Development Kit (SDK) è stato rilasciato per la prima volta nel 2007.[10] Dal 2017, Google ha reso possibile scaricare adb separatamente dall'Android SDK.[11]
Nel 2015, Microsoft ha rilasciato un emulatore Android in grado di connettersi al client adb.[12] Nel 2016, con Android Studio 2.0 si è registrato un miglioramento delle prestazioni di cinque volte nell'installazione delle applicazioni e nel trasferimento di file tramite adb.[13] Per semplificare l'uso di Android Things, nel 2017 è stato creato un wrapper attorno ai comandi adb manuali.[14] Con Android 11 nel 2020, Google ha introdotto le installazioni incrementali tramite adb.[15] Nel 2020, su macOS, l'integrazione di adb via Wi-Fi è stata incorporata in Android Studio.[16] Nel 2021, con Android 12, il comando adb backup
è stato limitato: il backup dei dati utente delle app è diventato opzionale e richiede una configurazione esplicita nel manifesto di ciascun app,[17] dopo la deprecazione di adb backup e
adb restore
in Android 10.[18] Fuchsia sarà retrocompatibile con adb, ma in seguito verrà sostituito dagli strumenti fx e ffx.[19]
Configurazione
[modifica | modifica wikitesto]Computer host
[modifica | modifica wikitesto]Per Windows, l'Android SDK contiene il binario adb.exe che può essere estratto e installato.[20] How-To Geek consiglia di aggiungere la cartella contenente i binari alla variabile d'ambiente PATH.[21]
Su Ubuntu, adb può essere installato tramite il pacchetto android-tools-adb
.[22] Su Debian, si consiglia di installare anche il pacchetto android-sdk-platform-tools-common
insieme a adb
, in quanto installa le regole udev necessarie per eseguire lo strumento senza privilegi di root.[23] Per macOS e altre distribuzioni Linux, è possibile scaricare le Platform Tools e aggiungere la cartella corrispondente alla variabile PATH modificando il file bashrc.[24]
Dispositivo Android
[modifica | modifica wikitesto]In Android 4.2.2 o versioni successive (livello API 17), viene mostrata una finestra di dialogo contenente l'impronta digitale RSA che l'utente deve accettare. Questa misura impedisce l'abuso del meccanismo di debug senza il consenso dell'utente.[25] A partire da Android 4.2, le opzioni sviluppatore sono nascoste per impostazione predefinita: per renderle visibili è necessario premere sette volte il numero di build nel menu Informazioni. In seguito è possibile abilitare l'opzione Debug USB.[26] Alcuni produttori di dispositivi Android utilizzano procedure diverse per abilitarlo. Ad esempio, Huawei richiede l'inserimento di un codice PIN prima di poter abilitare adb.
Se il touchscreen di un dispositivo Android è rotto, è possibile collegare un mouse al dispositivo tramite USB On-The-Go e abilitare il debug USB.[27][28]
Architettura
[modifica | modifica wikitesto]Il protocollo adb può essere trasmesso sia via USB sia via Wi-Fi su TCP. Si basa su un'architettura client-server e utilizza due protocolli diversi: uno tra client e server e un altro tra server e demone. Il demone adb, implementato in C, e si trova nello spazio utente di Android. La sua esecuzione fa uso del framework USB di Android, UsbDeviceManager
e UsbDebuggingManager
.[29]
Protocollo client ↔ server
[modifica | modifica wikitesto]La comunicazione tra client e server avviene tramite un socket TCP. Il server attende connessioni su una porta alla quale il client deve inviare una richiesta. La richiesta contiene un campo iniziale di 4 byte in ASCII e un payload. Il payload inizia con la parola host per indicare che deve essere inviato al server. Il server può quindi rispondere con OKAY o FAIL per indicare lo stato, combinato con un payload facoltativo e la relativa lunghezza.[29]
Protocollo server ↔ demone
[modifica | modifica wikitesto]I messaggi inviati dal server sono costituiti da un'intestazione lunga 24 byte, contenente i seguenti campi:[29]
- Comando
- Primo argomento
- Secondo argomento
- Lunghezza del payload, 0 o superiore
- CRC-32 del payload dati
- Valore magico, calcolato come comando XOR
0xFFFFFFFF
Sicurezza
[modifica | modifica wikitesto]Fino ad Android 2.2, Android era vulnerabile all'exploit RageAgainstTheCage. Il demone adb non controllava il valore di ritorno della chiamata di sistema setuid durante la riduzione dei privilegi. L'exploit crea numerosi processi fino a esaurire gli identificatori di processo disponibili. Quando il demone si blocca e si riavvia, non riesce a creare un nuovo processo con privilegi ridotti e continua a funzionare con i privilegi di root, fornendo così una shell root tramite adb.[30] Nel 2017 è stata scoperta una vulnerabilità di sicurezza che sfruttava ADB per prendere il controllo del modem integrato nel dispositivo. L'attacco richiedeva che adb fosse già abilitato e autorizzato, anche se erano disponibili alcune soluzioni alternative.[31]
Diverse famiglie di malware come ADB.Miner, Ares, IPStorm, Fbot e Trinity, hanno eseguito scansioni su Internet alla ricerca di dispositivi con l'interfaccia adb esposta pubblicamente, installando su di essi malware.[32] Tuttavia, adb può anche essere utilizzato per rimuovere malware, avviando il dispositivo in modalità provvisoria ed eseguendo il comando adb uninstall
.[33]
Note
[modifica | modifica wikitesto]- ^ Lauren Darcey, Android wireless application development, 3rd, Addison-Wesley, 2012, ISBN 978-0-321-81383-1, OCLC 749852462.
- ^ (EN) Barry Burd, Things You Can Do with Android's adb Command, su For Dummies. URL consultato il 3 luglio 2025 (archiviato il 15 maggio 2018).
- ^ CHUCK EASTTOM, An In-Depth Guide to Mobile Device Forensics, CRC PRESS, 2021, pp. 72, ISBN 978-0-367-63300-4, OCLC 1250310301.
- ^ Jack Wallen, How to create a full backup of your Android device without root, su techrepublic.com, 6 marzo 2015. URL consultato il 3 luglio 2025 (archiviato il 24 gennaio 2016).
- ^ Rajaram Regupathy, Unboxing Android USB: a hands-on approach with real World examples, 2014, ISBN 978-1-4302-6209-1, OCLC 880673864.
- ^ Ivan Morgillo e Stefano Viola, Learning embedded Android N programming: create the perfectly customized system by unleashing the power of Android OS on your embedded device, 2016, p. 89, ISBN 9781785283284, OCLC 1020708322.
- ^ Skanda Hazarika, How to sideload Android apps on Windows 11, su xda-developers.com, 23 gennaio 2022. URL consultato il 3 luglio 2025.
- ^ Arif Bacchus, How to sideload apps to a Chromebook, su xda-developers.com, 5 marzo 2023. URL consultato il 3 luglio 2025.
- ^ User manual | Shizuku, su shizuku.rikka.app. URL consultato il 3 luglio 2025.
- ^ (EN) Google releases Android SDK, su Macworld. URL consultato il 3 luglio 2025.
- ^ (EN) Ryan Whitwam, Google makes ADB, fastboot, and other platform tools available without full SDK or Android Studio download, su Android Police, 5 gennaio 2017. URL consultato il 3 luglio 2025.
- ^ (EN) Cosmin Vasile, Microsoft Releases Android Emulator and It's Supposed to Be Faster than Google's, su softpedia, 29 luglio 2015. URL consultato il 3 luglio 2025.
- ^ (EN) Android Studio 2.0 - Beta, su Android Developers Blog. URL consultato il 3 luglio 2025.
- ^ (EN) Android Things Developer Preview 6, su Android Developers Blog. URL consultato il 3 luglio 2025.
- ^ (EN) Turning it up to 11: Android 11 for developers, su Android Developers Blog. URL consultato il 3 luglio 2025.
- ^ (EN) Announcing Android Studio Arctic Fox (2020.3.1) & Android Gradle plugin 7.0, su Android Developers Blog. URL consultato il 3 luglio 2025.
- ^ Behavior changes: Apps targeting Android 12, su Android Developers. URL consultato il 3 luglio 2025.
- ^ (EN) Google Considers Removing Android ADB Backup and Restore, su BleepingComputer. URL consultato il 3 luglio 2025.
- ^ (EN) Kyle Bradshaw, Google wants to make Fuchsia devices manageable with Android’s ADB tool, in 9to5Google, 26 agosto 2022. URL consultato il 3 luglio 2025.
- ^ B. M. Harwani, PhoneGap build: developing cross platform mobile applications in the cloud, su search.worldcat.org, 2013, p. 38. URL consultato il 3 luglio 2025.
- ^ (EN) Chris Hoffman, Joe Fedewa, Nick Lewis, How to Install and Use ADB, the Android Debug Bridge Utility, su How-To Geek, 5 ottobre 2016. URL consultato il 3 luglio 2025.
- ^ Neil Smyth, Android Studio 4. 0 Development Essentials - Java Edition: Developing Android Apps Using Android Studio 4. 0, Java and Android Jetpack., 2020, ISBN 978-1-951442-21-7, OCLC 1190906409.
- ^ Debian -- Details of package adb in bookworm, su packages.debian.org. URL consultato il 3 luglio 2025.
- ^ (EN) How to Install Android Debug Bridge (ADB) and Fastboot, su Lifewire. URL consultato il 2 luglio 2025.
- ^ Run apps on a hardware device, su Android Developers. URL consultato il 3 luglio 2025.
- ^ (EN) Mobility, su TechRepublic. URL consultato il 3 luglio 2025 (archiviato dall'url originale il 26 settembre 2022).
- ^ (EN) Udochi Ogubuike, How to enable USB debugging mode on Android, su Punch Newspapers, 9 agosto 2019. URL consultato il 3 luglio 2025.
- ^ Come attivare debug USB, su Salvatore Aranzulla. URL consultato il 3 luglio 2025.
- ^ a b c Rajaram Regupathy, Unboxing Android USB: a hands-on approach with real World examples, 2014, ISBN 978-1-4302-6209-1, OCLC 880673864.
- ^ Joshua J. Drake, Android hacker's handbook, Wiley, 2014, pp. 75, ISBN 978-1-118-60861-6, OCLC 875820167.
- ^ (EN) Tom Mendelsohn, Google plugs severe Android vulnerability that exposed devices to spying, su Ars Technica, 9 gennaio 2017. URL consultato il 3 luglio 2025.
- ^ (EN) Catalin Cimpanu, Android devices ensnared in DDoS botnet, su ZDNET. URL consultato il 3 luglio 2025.
- ^ (EN) Evan Schuman, This Vultur app takes malicious to the next level, in Computerworld.
Voci correlate
[modifica | modifica wikitesto]Altri progetti
[modifica | modifica wikitesto]Wikimedia Commons contiene immagini o altri file su Android Debug Bridge
Collegamenti esterni
[modifica | modifica wikitesto]- Android Debug Bridge, su packages.debian.org.
- Repository sorgenti di Android Debug Bridge, su android.googlesource.com.
- Sito ufficiale, su developer.android.com.
- Using ADB and fastboot, su LineageOS wiki.
- Android Debug Bridge, su Arch Linux wiki. URL consultato il 2 luglio 2025.
- Android/adb, su Gentoo Linux wiki. URL consultato il 3 luglio 2025.
- (EN) Android Debug Bridge (ADB), su Android Wiki. URL consultato il 2 luglio 2025 (archiviato dall'url originale il 26 febbraio 2024).
- https://www.navigaweb.net/2013/11/opzioni-sviluppatore-android.html
- https://pypi.org/project/xcrun/