Android Debug Bridge: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: sintassi dei link e modifiche minori |
Nessun oggetto della modifica |
||
(26 versioni intermedie di 18 utenti non mostrate) | |||
Riga 1:
{{Software
|Nome = Android Debug Bridge
|Logo = Android Robot Head 2023.svg
|Screenshot = Android Debug Bridge in GNOME terminal.png
|Didascalia = Avvio del server ADB nel [[GNOME Terminal]], che quindi rileva i dispositivi. Successivamente, viene aperta una shell sul dispositivo in debug per eseguire il comando [[uname]]
|Sviluppatore = [[Google]]
|UltimaVersione = 34.0.1
|DataUltimaVersione = Marzo 2023
|SistemaOperativo = windows
|SistemaOperativo2 = gnu/linux
|SistemaOperativo3 = macos
|Linguaggio = c++
|Genere =
|Licenza = [[Apache 2.0]]
|SoftwareLibero = sì
}}
'''Android Debug Bridge''' (comunemente abbreviato in '''adb''') è uno strumento di programmazione utilizzato per il [[Debugging|debug]] dei dispositivi basati su [[Android]]. Sul dispositivo Android viene eseguito un [[Demone (informatica)|demone]] che si connette a un server installato sul PC host via [[USB]] o [[Transmission Control Protocol|TCP]], che a sua volta si connette al client utilizzato dall'utente finale tramite TCP. Reso disponibile come [[software]] [[open source]] da [[Google (azienda)|Google]] con [[licenza Apache]] dal 2007, adb mette a disposizione una shell e la funzionalità di [[backup]] dei dati. Il programma è disponibile per [[Microsoft Windows|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 (crittografia)|RSA]] e la possibilità di definire una [[whitelist]] di dispositivi autorizzati.
== Caratteristiche ==
[[File:Android Device Monitor.png|sinistra|miniatura| Android Device Monitor]]
Le funzionalità di adb comprendono la copia di file dal computer host,<ref>{{Cita libro|nome=Lauren|cognome=Darcey|titolo=Android wireless application development|url=https://www.worldcat.org/oclc/749852462|edizione=3rd|data=2012|editore=Addison-Wesley|oclc=749852462|ISBN=978-0-321-81383-1}}</ref> l'installazione di applicazioni, la visualizzazione dell'output di logcat, l'accesso a una [[shell Unix]],<ref>{{Cita web|lingua=en|autore=Barry Burd|url=https://www.dummies.com/web-design-development/mobile-apps/android-apps/things-you-can-do-with-androids-adb-command/|titolo=Things You Can Do with Android's adb Command|sito=[[For Dummies]]|accesso=3 luglio 2025|urlarchivio=https://web.archive.org/web/20180515143530/https://www.dummies.com/web-design-development/mobile-apps/android-apps/things-you-can-do-with-androids-adb-command|urlmorto=no}}</ref> e il riavvio in modalità Qualcomm EDL.<ref>{{Cita libro|nome=CHUCK|cognome=EASTTOM|titolo=An In-Depth Guide to Mobile Device Forensics|url=https://www.worldcat.org/oclc/1250310301|data=2021|editore=CRC PRESS|pp=72|oclc=1250310301|ISBN=978-0-367-63300-4}}</ref> Ad esempio, [[APK (formato di file)|le applicazioni]] Android possono essere salvate tramite il comando <code>backup</code> in un file.<ref>{{Cita web|autore=Jack Wallen|url=https://www.techrepublic.com/article/how-to-create-a-full-backup-of-your-android-device-without-root/|titolo=How to create a full backup of your Android device without root|data=6 marzo 2015|accesso=3 luglio 2025|urlarchivio=https://web.archive.org/web/20160124184710/https://www.techrepublic.com/article/how-to-create-a-full-backup-of-your-android-device-without-root/|urlmorto=no}}</ref> Include anche il supporto per il protocollo Java Debug Wire.<ref name=":032">{{Cita libro|nome=Rajaram|cognome=Regupathy|titolo=Unboxing Android USB: a hands-on approach with real World examples|url=https://www.worldcat.org/oclc/880673864|data=2014|oclc=880673864|ISBN=978-1-4302-6209-1}}</ref>
Sono state rese disponibili alcune [[Interfaccia grafica|interfacce grafiche]]. L'Android Device Monitor, fornito all'interno di [[Android Studio]], permette di ottenere informazioni dettagliate da un dispositivo Android.<ref>{{Cita libro|nome=Ivan|cognome=Morgillo|nome2=Stefano|cognome2=Viola|titolo=Learning embedded Android N programming: create the perfectly customized system by unleashing the power of Android OS on your embedded device|url=https://books.google.com/books?id=bOrUDQAAQBAJ|data=2016|p=89|oclc=1020708322|ISBN=9781785283284}}</ref>
Il metodo di Android per installare file APK su un dispositivo è stato utilizzato per installare manualmente applicazioni non ufficiali su [[Windows 11|Windows Subsystem for Android]]<ref>{{Cita web|autore=Skanda Hazarika|url=https://www.xda-developers.com/how-to-sideload-android-apps-on-windows-11/|titolo=How to sideload Android apps on Windows 11|data=23 gennaio 2022|accesso=3 luglio 2025}}</ref> e sulla [[macchina virtuale]] Android di Chrome OS.<ref>{{Cita web|autore=Arif Bacchus|url=https://www.xda-developers.com/how-sideload-apps-chromebook/|titolo=How to sideload apps to a Chromebook|data=5 marzo 2023|accesso=3 luglio 2025}}</ref>
Shizuku consente a un telefono Android di collegarsi al proprio ADB quando è connesso a una rete wireless. L'applicazione è disponibile gratuitamente su [[Google Play|Google Play Store]].<ref>{{Cita web|url=https://shizuku.rikka.app/guide/setup/|titolo=User manual {{!}} Shizuku|sito=shizuku.rikka.app|accesso=3 luglio 2025}}</ref>
== Storia ==
L'[[Android SDK|Android Software Development Kit]] (SDK) è stato rilasciato per la prima volta nel 2007.<ref>{{Cita web|lingua=en|url=https://www.macworld.com/article/188112/androidsdk.html|titolo=Google releases Android SDK|sito=Macworld|accesso=3 luglio 2025}}</ref> Dal 2017, Google ha reso possibile scaricare adb separatamente dall'Android SDK.<ref>{{Cita web|lingua=en|autore=Ryan Whitwam|url=https://www.androidpolice.com/2017/01/05/google-makes-adb-fastboot-platform-tools-available-without-full-sdk-android-studio-download/|titolo=Google makes ADB, fastboot, and other platform tools available without full SDK or Android Studio download|sito=Android Police|data=5 gennaio 2017|accesso=3 luglio 2025}}</ref>
Nel 2015, Microsoft ha rilasciato un emulatore Android in grado di connettersi al client adb.<ref>{{Cita web|lingua=en|autore=Cosmin Vasile|url=https://news.softpedia.com/news/microsoft-releases-android-emulator-and-it-s-supposed-to-be-faster-than-google-s-488016.shtml|titolo=Microsoft Releases Android Emulator and It's Supposed to Be Faster than Google's|sito=softpedia|data=29 luglio 2015|accesso=3 luglio 2025}}</ref> 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.<ref>{{Cita web|lingua=en|url=https://android-developers.googleblog.com/2016/02/android-studio-20-beta.html|titolo=Android Studio 2.0 - Beta|sito=Android Developers Blog|accesso=3 luglio 2025}}</ref> Per semplificare l'uso di [[Android Things]], nel 2017 è stato creato un [[wrapper]] attorno ai comandi adb manuali.<ref>{{Cita web|lingua=en|url=https://android-developers.googleblog.com/2017/11/android-things-developer-preview-6.html|titolo=Android Things Developer Preview 6|sito=Android Developers Blog|accesso=3 luglio 2025}}</ref> Con Android 11 nel 2020, Google ha introdotto le installazioni incrementali tramite adb.<ref>{{Cita web|lingua=en|url=https://android-developers.googleblog.com/2020/09/android11-final-release.html|titolo=Turning it up to 11: Android 11 for developers|sito=Android Developers Blog|accesso=3 luglio 2025}}</ref> Nel 2020, su macOS, l'integrazione di adb via Wi-Fi è stata incorporata in Android Studio.<ref>{{Cita web|lingua=en|url=https://android-developers.googleblog.com/2020/12/announcing-android-studio-arctic-fox.html|titolo=Announcing Android Studio Arctic Fox (2020.3.1) & Android Gradle plugin 7.0|sito=Android Developers Blog|accesso=3 luglio 2025}}</ref> Nel 2021, con [[Android 12]], il comando <code>adb backup</code> è stato limitato: il backup dei dati utente delle app è diventato opzionale e richiede una configurazione esplicita nel manifesto di ciascun app,<ref>{{Cita web|url=https://developer.android.com/about/versions/12/behavior-changes-12?hl=it|titolo=Behavior changes: Apps targeting Android 12|sito=Android Developers|accesso=3 luglio 2025}}</ref> dopo la deprecazione di <code>adb backup e</code> <code>adb restore</code> in Android 10.<ref>{{Cita web|lingua=en-us|url=https://www.bleepingcomputer.com/news/mobile/google-considers-removing-android-adb-backup-and-restore/|titolo=Google Considers Removing Android ADB Backup and Restore|sito=BleepingComputer|accesso=3 luglio 2025}}</ref> [[Google Fuchsia|Fuchsia]] sarà retrocompatibile con adb, ma in seguito verrà sostituito dagli strumenti fx e ffx.<ref>{{Cita news|lingua=en|nome=Kyle|cognome=Bradshaw|url=https://9to5google.com/2022/08/26/fuchsia-adb-proposal/|titolo=Google wants to make Fuchsia devices manageable with Android’s ADB tool|pubblicazione=9to5Google|data=26 agosto 2022|accesso=3 luglio 2025}}</ref>
== Configurazione ==
{{Galleria
|larghezza = 200px
|align = right
|sfondo = white
|bordo = black|File:USB debugging prompt warning - Android 13.png|Per abilitare il debug USB sul dispositivo Android, è necessario attivarlo nella finestra delle opzioni sviluppatore|File:USB debugging prompt - RSA auth - Android 13.png|Dopo che il dispositivo è stato collegato al computer host, l’utente deve verificare l’impronta della chiave RSA del computer host
}}
=== Computer host ===
Per [[Microsoft Windows|Windows]], l'Android SDK contiene il binario adb.exe che può essere estratto e installato.<ref>{{Cita web|lingua=it|autore=B. M. Harwani|url=https://search.worldcat.org/title/862745697|titolo=PhoneGap build: developing cross platform mobile applications in the cloud|data=2013|p=38|accesso=3 luglio 2025}}</ref> How-To Geek consiglia di aggiungere la cartella contenente i binari alla variabile d'ambiente PATH.<ref>{{Cita web|lingua=en|autore=Chris Hoffman, Joe Fedewa, Nick Lewis|url=https://www.howtogeek.com/125769/how-to-install-and-use-abd-the-android-debug-bridge-utility/|titolo=How to Install and Use ADB, the Android Debug Bridge Utility|sito=How-To Geek|data=5 ottobre 2016|accesso=3 luglio 2025}}</ref>
Su [[Ubuntu]], adb può essere installato tramite il pacchetto <code>android-tools-adb</code>.<ref>{{Cita libro|nome=Neil|cognome=Smyth|titolo=Android Studio 4. 0 Development Essentials - Java Edition: Developing Android Apps Using Android Studio 4. 0, Java and Android Jetpack.|url=https://www.worldcat.org/oclc/1190906409|data=2020|oclc=1190906409|ISBN=978-1-951442-21-7}}</ref> Su [[Debian]], si consiglia di installare anche il pacchetto <code>android-sdk-platform-tools-common</code> insieme a <code>adb</code>, in quanto installa le regole [[udev]] necessarie per eseguire lo strumento senza [[Root (utente)|privilegi di root]].<ref>{{Cita web|url=https://packages.debian.org/stable/adb|titolo=Debian -- Details of package adb in bookworm|sito=packages.debian.org|accesso=3 luglio 2025}}</ref> Per macOS e altre distribuzioni Linux, è possibile scaricare le Platform Tools e aggiungere la cartella corrispondente alla variabile PATH modificando il file [[bash]]rc.<ref>{{Cita web|lingua=en|url=https://www.lifewire.com/android-debug-bridge-adb-4149410|titolo=How to Install Android Debug Bridge (ADB) and Fastboot|sito=Lifewire|accesso=2 luglio 2025}}</ref>
=== Dispositivo Android ===
In [[Android Jelly Bean|Android 4.2.2]] o versioni successive ([[Versioni di Android|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.<ref>{{Cita web|url=https://developer.android.com/studio/run/device|titolo=Run apps on a hardware device|sito=Android Developers|accesso=3 luglio 2025}}</ref> 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.<ref>{{Cita web|lingua=en|url=https://www.techrepublic.com/topic/mobility/|titolo=Mobility|sito=TechRepublic|accesso=3 luglio 2025|urlarchivio=https://web.archive.org/web/20220926233940/https://www.techrepublic.com/article/pro-tip-how-to-enable-developer-options-in-android-42/}}</ref> 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 [[Touch screen|touchscreen]] di un dispositivo Android è rotto, è possibile collegare un mouse al dispositivo tramite [[USB On-The-Go]] e abilitare il debug USB.<ref>{{Cita web|lingua=en|autore=Udochi Ogubuike|url=https://punchng.com/how-to-enable-usb-debugging-mode-on-android/|titolo=How to enable USB debugging mode on Android|sito=Punch Newspapers|data=9 agosto 2019|accesso=3 luglio 2025}}</ref><ref>{{Cita web|lingua=it|url=https://www.aranzulla.it/come-attivare-debug-usb-1144637.html|titolo=Come attivare debug USB|sito=Salvatore Aranzulla|accesso=3 luglio 2025}}</ref>
== Architettura ==
Il protocollo adb può essere trasmesso sia via USB sia via [[Wi-Fi]] su [[Transmission Control Protocol|TCP]]. Si basa su [[Sistema client/server|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 (linguaggio di programmazione)|C]], e si trova nello spazio utente di Android. La sua esecuzione fa uso del [[framework]] USB di Android, <code>UsbDeviceManager</code> e <code>UsbDebuggingManager</code>.<ref name=":0432">{{Cita libro|nome=Rajaram|cognome=Regupathy|titolo=Unboxing Android USB: a hands-on approach with real World examples|url=https://www.worldcat.org/oclc/880673864|data=2014|oclc=880673864|ISBN=978-1-4302-6209-1}}
</ref>
=== Protocollo client ↔ server ===
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.<ref name=":0432"/>
=== Protocollo server ↔ demone ===
I messaggi inviati dal server sono costituiti da un'intestazione lunga 24 byte, contenente i seguenti campi:<ref name=":0432"/>
* Comando
* Primo argomento
* Secondo argomento
* Lunghezza del payload, 0 o superiore
* CRC-32 del payload dati
* Valore magico, calcolato come comando XOR <code>0xFFFFFFFF</code>
== Sicurezza ==
Fino ad [[Android Froyo|Android 2.2]], Android era vulnerabile [[Exploit|all'exploit]] ''RageAgainstTheCage''. Il [[Demone (informatica)|demone]] adb non controllava il valore di ritorno della [[chiamata di sistema]] [[Setuid e setgid|setuid]] durante la riduzione dei privilegi. L'exploit crea numerosi processi fino a esaurire gli [[PID (informatica)|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.<ref>{{Cita libro|nome=Joshua J.|cognome=Drake|titolo=Android hacker's handbook|url=https://www.worldcat.org/oclc/875820167|data=2014|editore=Wiley|pp=75|oclc=875820167|ISBN=978-1-118-60861-6}}</ref> 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.<ref>{{Cita web|lingua=en|autore=Tom Mendelsohn|url=https://arstechnica.com/information-technology/2017/01/google-plugs-severe-android-bootmode-vulnerability/|titolo=Google plugs severe Android vulnerability that exposed devices to spying|sito=[[Ars Technica]]|data=9 gennaio 2017|accesso=3 luglio 2025}}</ref>
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.<ref>{{Cita web|lingua=en|autore=Catalin Cimpanu|url=https://www.zdnet.com/article/android-devices-ensnared-in-ddos-botnet/|titolo=Android devices ensnared in DDoS botnet|sito=ZDNET|accesso=3 luglio 2025}}</ref> Tuttavia, adb può anche essere utilizzato per rimuovere malware, avviando il dispositivo in [[modalità provvisoria]] ed eseguendo il comando <code>adb uninstall</code>.<ref>{{Cita news|lingua=en|autore=Evan Schuman|url=https://www.computerworld.com/article/3627326/this-vultur-app-takes-malicious-to-the-next-level.html|titolo=This Vultur app takes malicious to the next level|pubblicazione=[[Computerworld]]}}</ref>
== Note ==
<references />
== Voci correlate ==
* [[Android recovery mode]]
* [[Fastboot]]
== Altri progetti ==
{{interprogetto}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{Sito ufficiale|https://developer.android.com/tools/adb}}
* {{Cita web|url=https://wiki.lineageos.org/adb_fastboot_guide|titolo=Using ADB and fastboot|sito=[[LineageOS]] wiki}}
* {{Cita web|url=https://wiki.archlinux.org/title/Android_Debug_Bridge|titolo=Android Debug Bridge|sito=[[Arch Linux]] wiki|accesso=2 luglio 2025}}
* {{Cita web|url=https://wiki.gentoo.org/wiki/Android/adb|titolo=Android/adb|sito=[[Gentoo Linux]] wiki|accesso=3 luglio 2025}}
* {{Cita web|lingua=en|url=https://en.droidwiki.org/wiki/Android_Debug_Bridge|titolo=Android Debug Bridge (ADB)|sito=Android Wiki|accesso=2 luglio 2025|urlarchivio=https://web.archive.org/web/20240226120857/https://en.droidwiki.org/wiki/Android_Debug_Bridge|urlmorto=sì}}
* https://www.navigaweb.net/2013/11/opzioni-sviluppatore-android.html
* https://pypi.org/project/xcrun/
{{Android}}
{{Portale|informatica}}
[[Categoria:Protocolli di comunicazione]]
[[Categoria:Debugging]]
[[Categoria:Android]]
|