Was ist die ADB?
Die ADB (Android Debug Bridge) ist ein Befehlszeilentool, das Teil des Android-Entwicklungskits (SDK) ist. Es ermöglicht eine Kommunikation zwischen einem Computer und einem Android-Gerät über beispielsweise einer USB-Verbindung.
Die durchführbaren Commands sind stark von den auf dem Gerät vorliegenden Berechtigungen abhängig. Tiefgreifende Aktionen mit der ADB können nur durchgeführt werden, wenn Root-Rechte vorliegen. Anwendungsbeispiele sind:
- Installation von Apps auf einem Android-Gerät
- Netzwerkmonitoring
- Kopieren von Dateien zwischen dem Computer und dem Android-Gerät
- Aufzeichnen von Systemprotokollen (Logs) vom Android-Gerät
- Debuggen von Apps auf einem angeschlossenen Android-Gerät
- Forensische Untersuchungen eines Android-Geräts oder einer App
- Erstellen eines Speicherabbilds (physikalisch oder logisch)
- Sicherung von Log-Dateien
- Änderungen der Dateirechte
Im Folgenden werden gängige ADB-Commands aufgeführt. Diese wurden von mir an einem gerooteten Testgerät geprüft. Durch die Kombination der ADB mit den gängigen Kommandozeilenbefehle unter Linux kann eine enorme Vielfalt von Befehlen durchgeführt werden. Daher werden hier nur Befehle aufgeführt, die meiner Meinung nach für das forensische Arbeiten nötig sind.
Starten/Beenden des ADB-Servers
Beschreibung | Syntax | Beispiel |
---|---|---|
Anzeigen möglicher ADB-Commands | adb help | — |
Starten des ADB-Servers | adb start-server | — |
Beenden des ADB-Servers | adb kill-server | — |
USB-Modus und Infos zum Gerät
Beschreibung | Syntax | Beispiel |
---|---|---|
Starten des USB-Modus | adb usb | — |
Zeigt alle Geräte mit Infos zum Produkt und Model | adb devices -l | — |
ADB mit Shell
Beschreibung | Syntax | Beispiel |
---|---|---|
Shell starten | adb shell | — |
Gerät aus mehreren auswählen und Shell erstellen | adb -s <ID> shell | adb -s 9889db455449334550 shell |
Command auf einem Gerät ausführen | adb -s <ID> shell <COMMAND> | adb -s 9889db455449334550 shell ls |
Geräteneustarts
Beschreibung | Syntax | Beispiel |
---|---|---|
Reboot des Geräts | adb -s <ID> reboot | adb -s 9889db455449334550 reboot |
Reboot in den Recovery-Modus | adb -s <ID> reboot recovery | adb -s 9889db455449334550 reboot recovery |
Logcat und Bug-Report
Beschreibung | Syntax | Beispiel |
---|---|---|
Anzeigen der Android-Version | adb shell getprop ro.build.version.release | — |
Alle Logs mit Logcat anzeigen | adb logcat | — |
Sichern der Logcat-Einträge auf einem PC | adb logcat -d > <DATEINAME> | adb logcat -d > logcatSicherung.txt |
Erstellen eines Bug-Reports in dem aktuellen Dateipfad (als .zip) | adb bugreport | — |
Kopiervorgänge zwischen PC und Android-Gerät
Beschreibung | Syntax | Beispiel |
---|---|---|
Daten von Android-Device auf PC kopieren | adb pull <SOURCE> <DESTINATION> | adb pull /sdcard/screenshot1.pdf C:\Users\DeinUsername\Pictures\ |
Daten von PC auf Android-Device kopieren | adb push <SOURCE> <DESTINATION> | adb push C:\Users\DeinUsername\Pictures\ /sdcard/screenshot1.pdf |
Aktionen mit APKs
Beschreibung | Syntax | Beispiel |
---|---|---|
Installation einer APK | adb -s <ID> install <…/APK.apk> | adb -s 9889db455449334550 install .\app-debug-androidTest.apk |
Deinstallation einer App | adb -s <ID> uninstall <PACKAGE> | adb -s 9889db455449334550 uninstall mobile.forensic.errorcode404 |
Deinstallation über Package-Manager | adb shell pm uninstall <PACKAGE> | adb shell pm uninstall mobile.forensic.errorcode404 |
Dateien in Abhängigkeit eines Package löschen | adb shell pm clear <PACKAGE> | adb shell pm clear mobile.forensic.errorcode404 |
Update einer APK | adb install -r <…/APK.apk> | adb shell install -r .\app-debug-androidTest.apk |
Verschiedene Aktionen auf dem Gerät
Beschreibung | Syntax | Beispiel |
---|---|---|
Klick Home-Button | adb shell am start -W -c android.intent.category.HOME -a android.intent.action.MAIN | — |
Aktivitätsmanager öffnen | adb shell am start -a android.intent.action.VIEW | — |
Telefonanruf starten | adb shell am start -a android.intent.action.CALL -d tel:<NUMMER> | adb shell am start -a android.intent.action.CALL -d tel:+4912345678910111 |
SMS-öffnen und eine Nachricht schreiben | adb shell am start -a android.intent.action.SENDTO -d sms:<NUMMER> – -es sms_body „<TEXT> – -ez exit_on_sent false“ | adb shell am start -a android.intent.action.SENDTO -d sms:+4912345678910111 – -es sms_body „Test – -ez exit_on_sent false“ |
Texteingaben | adb shell input text <‘TEXT‘> | adb shell input text ‘Hallo\ das\ ist\ ein\ Test‘ |
Erstellen von Screenshots | adb shell screencap -p <PFAD/DATEINAME> | adb shell screencap -p /sdcard/test.png |
Screenshot sichern | adb pull /sdcard/test.png | — |
Bildschirmgröße
Beschreibung | Syntax | Beispiel |
---|---|---|
Bildschirmgröße ändern | adb shell wm size <X*Y> | adb shell wm size 2048×1536 |
Bildschirmgröße zurücksetzen | adb shell wm size reset | — |
Nutzung verschiedener Geräte-Tools
Beschreibung | Syntax | Beispiel |
---|---|---|
Auflistung aller Geräte-Features | adb shell pm list features | — |
Netstat-Ausgabe | adb shell netstat | — |
Netstat-Ausgabe mit den wichtigsten Optionen | adb shell netstat -tulpen | — |
Suche auf dem Gerät mit „find“ (unter Windows) | adb shell find -name <NAME> 2>$null | adb shell find -name Download 2>$null |
Aktuelle Prozesse anzeigen | adb shell ps | — |
Dumpsys-Ausgabe | adb shell dumpsys | — |
Sicherung der dumpsys-Ausgabe | adb shell dumpsys > <DATEINAME.txt> | adb shell dumpsys > dumpsys.txt |
Auflistung aller Dateinamen | adb shell ls -R > <DATEINAME> | adb shell ls -R > ListeAllerDateinamen.txt |
Zentrale Tastenevents
Beschreibung | Syntax |
---|---|
KEYCODE_SOFT_LEFT | adb shell input keyevent 1 |
KEYCODE_SOFT_RIGHT | adb shell input keyevent 2 |
KEYCODE_HOME | adb shell input keyevent 3 |
KEYCODE_BACK | adb shell input keyevent 4 |
KEYCODE_CALL | adb shell input keyevent 5 |
KEYCODE_ENDCALL | adb shell input keyevent 6 |
KEYCODE_0 | adb shell input keyevent 7 |
KEYCODE_1 | adb shell input keyevent 8 |
KEYCODE_2 | adb shell input keyevent 9 |
KEYCODE_3 | adb shell input keyevent 10 |
KEYCODE_4 | adb shell input keyevent 11 |
KEYCODE_5 | adb shell input keyevent 12 |
KEYCODE_6 | adb shell input keyevent 13 |
KEYCODE_7 | adb shell input keyevent 14 |
KEYCODE_8 | adb shell input keyevent 15 |
KEYCODE_9 | adb shell input keyevent 16 |
KEYCODE_STAR | adb shell input keyevent 17 |
KEYCODE_POUND | adb shell input keyevent 18 |
KEYCODE_DPAD_UP | adb shell input keyevent 19 |
KEYCODE_DPAD_DOWN | adb shell input keyevent 20 |
KEYCODE_DPAD_LEFT | adb shell input keyevent 21 |
KEYCODE_DPAD_RIGHT | adb shell input keyevent 22 |
KEYCODE_DPAD_CENTER | adb shell input keyevent 23 |
KEYCODE_VOLUME_UP | adb shell input keyevent 24 |
KEYCODE_VOLUME_DOWN | adb shell input keyevent 25 |
KEYCODE_POWER | adb shell input keyevent 26 |
KEYCODE_CAMERA | adb shell input keyevent 27 |
KEYCODE_CLEAR | adb shell input keyevent 28 |
KEYCODE_A | adb shell input keyevent 29 |
KEYCODE_B | adb shell input keyevent 30 |
KEYCODE_C | adb shell input keyevent 31 |
KEYCODE_D | adb shell input keyevent 32 |
KEYCODE_E | adb shell input keyevent 33 |
KEYCODE_F | adb shell input keyevent 34 |
KEYCODE_G | adb shell input keyevent 35 |
KEYCODE_H | adb shell input keyevent 36 |
KEYCODE_I | adb shell input keyevent 37 |
KEYCODE_J | adb shell input keyevent 38 |
KEYCODE_K | adb shell input keyevent 39 |
KEYCODE_L | adb shell input keyevent 40 |
KEYCODE_M | adb shell input keyevent 41 |
KEYCODE_N | adb shell input keyevent 42 |
KEYCODE_O | adb shell input keyevent 43 |
KEYCODE_P | adb shell input keyevent 44 |
KEYCODE_Q | adb shell input keyevent 45 |
KEYCODE_R | adb shell input keyevent 46 |
KEYCODE_S | adb shell input keyevent 47 |
KEYCODE_T | adb shell input keyevent 48 |
KEYCODE_U | adb shell input keyevent 49 |
KEYCODE_V | adb shell input keyevent 50 |
KEYCODE_W | adb shell input keyevent 51 |
KEYCODE_X | adb shell input keyevent 52 |
KEYCODE_Y | adb shell input keyevent 53 |
KEYCODE_Z | adb shell input keyevent 54 |
KEYCODE_COMMA | adb shell input keyevent 55 |
KEYCODE_PERIOD | adb shell input keyevent 56 |
KEYCODE_ALT_LEFT | adb shell input keyevent 57 |
KEYCODE_ALT_RIGHT | adb shell input keyevent 58 |
KEYCODE_SHIFT_LEFT | adb shell input keyevent 59 |
KEYCODE_SHIFT_RIGHT | adb shell input keyevent 60 |
KEYCODE_TAB | adb shell input keyevent 61 |
KEYCODE_SPACE | adb shell input keyevent 62 |
KEYCODE_SYM | adb shell input keyevent 63 |
KEYCODE_EXPLORER | adb shell input keyevent 64 |
KEYCODE_ENVELOPE | adb shell input keyevent 65 |
KEYCODE_ENTER | adb shell input keyevent 66 |
KEYCODE_DEL | adb shell input keyevent 67 |
KEYCODE_GRAVE | adb shell input keyevent 68 |
KEYCODE_MINUS | adb shell input keyevent 69 |
KEYCODE_EQUALS | adb shell input keyevent 70 |
KEYCODE_LEFT_BRACKET | adb shell input keyevent 71 |
KEYCODE_RIGHT_BRACKET | adb shell input keyevent 72 |
KEYCODE_BACKSLASH | adb shell input keyevent 73 |
KEYCODE_SEMICOLON | adb shell input keyevent 74 |
KEYCODE_APOSTROPHE | adb shell input keyevent 75 |
KEYCODE_SLASH | adb shell input keyevent 76 |
KEYCODE_AT | adb shell input keyevent 77 |
KEYCODE_NUM | adb shell input keyevent 78 |
KEYCODE_HEADSETHOOK | adb shell input keyevent 79 |
KEYCODE_FOCUS | adb shell input keyevent 80 |
KEYCODE_PLUS | adb shell input keyevent 81 |
KEYCODE_MENU | adb shell input keyevent 82 |
KEYCODE_NOTIFICATION | adb shell input keyevent 83 |
KEYCODE_SEARCH | adb shell input keyevent 84 |
KEYCODE_MEDIA_PLAY_PAUSE | adb shell input keyevent 85 |
KEYCODE_MEDIA_STOP | adb shell input keyevent 86 |
KEYCODE_MEDIA_NEXT | adb shell input keyevent 87 |
KEYCODE_MEDIA_PREVIOUS | adb shell input keyevent 88 |
KEYCODE_MEDIA_REWIND | adb shell input keyevent 89 |
KEYCODE_MEDIA_FAST_FORWARD | adb shell input keyevent 90 |
KEYCODE_MUTE | adb shell input keyevent 91 |
KEYCODE_KEYCODE_PAGE_UP | adb shell input keyevent 92 |
KEYCODE_KEYCODE_PAGE_DOWN | adb shell input keyevent 93 |
KEYCODE_KEYCODE_PICTSYMBOLS | adb shell input keyevent 94 |
KEYCODE_SWITCH_CHARSET | adb shell input keyevent 95 |
KEYCODE_BUTTON_A | adb shell input keyevent 96 |
KEYCODE_BUTTON_B | adb shell input keyevent 97 |
KEYCODE_BUTTON_C | adb shell input keyevent 98 |
KEYCODE_BUTTON_X | adb shell input keyevent 99 |
KEYCODE_BUTTON_Y | adb shell input keyevent 100 |
KEYCODE_BUTTON_Z | adb shell input keyevent 101 |
KEYCODE_BUTTON_L1 | adb shell input keyevent 102 |
KEYCODE_BUTTON_R1 | adb shell input keyevent 103 |
KEYCODE_BUTTON_L2 | adb shell input keyevent 104 |
KEYCODE_BUTTON_R2 | adb shell input keyevent 105 |
Sonstige Tastenevents
Beschreibung | Syntax |
---|---|
KEYCODE_MOVE_HOME | adb shell input keyevent 122 |
KEYCODE_MOVE_END | adb shell input keyevent 123 |
KEYCODE_CONTACTS | adb shell input keyevent 207 |
KEYCODE_BRIGHTNESS_DOWN | adb shell input keyevent 220 |
KEYCODE_BRIGHTNESS_UP | adb shell input keyevent 221 |
KEYCODE_SLEEP | adb shell input keyevent 223 |
KEYCODE_CUT | adb shell input keyevent 277 |
KEYCODE_COPY | adb shell input keyevent 278 |
KEYCODE_PASTE | adb shell input keyevent 279 |
Weitere Tastenevents könne der Dokumentation hier entnommen werden.