hacktricks/mobile-pentesting/android-app-pentesting/adb-commands.md
2024-02-11 01:46:25 +00:00

370 lines
14 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
</details>
**Adb zazwyczaj znajduje się w:**
```bash
#Windows
C:\Users\<username>\AppData\Local\Android\sdk\platform-tools\adb.exe
#MacOS
/Users/<username>/Library/Android/sdk/platform-tools/adb
```
**Informacje uzyskane z:** [**http://adbshell.com/**](http://adbshell.com)
# Połączenie
```
adb devices
```
To polecenie wyświetli podłączone urządzenia; jeśli pojawi się "_**nieautoryzowane**_", oznacza to, że musisz **odblokować** swój **telefon komórkowy** i **zaakceptować** połączenie.
To informuje urządzenie, że musi uruchomić serwer adb na porcie 5555:
```
adb tcpip 5555
```
Podłącz się do tego adresu IP i tego portu:
```
adb connect <IP>:<PORT>
```
Jeśli otrzymasz błąd podobny do poniższego w wirtualnym oprogramowaniu Androida (np. Genymotion):
```
adb server version (41) doesn't match this client (36); killing...
```
To dlatego, że próbujesz połączyć się z serwerem ADB o innej wersji. Po prostu spróbuj znaleźć binarny plik adb, którego używa oprogramowanie (przejdź do `C:\Program Files\Genymobile\Genymotion` i wyszukaj adb.exe)
## Wiele urządzeń
Zawsze, gdy **podłączonych jest wiele urządzeń do twojego komputera**, będziesz musiał **określić, na którym z nich** chcesz uruchomić polecenie adb.
```bash
adb devices
List of devices attached
10.10.10.247:42135 offline
127.0.0.1:5555 device
```
```bash
adb -s 127.0.0.1:5555 shell
x86_64:/ # whoami
root
```
## Tunelowanie portów
W przypadku, gdy **port adb** jest dostępny tylko z **localhost** na urządzeniu z systemem Android, ale **masz dostęp za pośrednictwem SSH**, możesz **przekierować port 5555** i połączyć się za pomocą adb:
```bash
ssh -i ssh_key username@10.10.10.10 -L 5555:127.0.0.1:5555 -p 2222
adb connect 127.0.0.1:5555
```
# Menedżer pakietów
## Instalacja/Odinstalowanie
### adb install \[opcja] \<ścieżka>
```bash
adb install test.apk
adb install -l test.apk # forward lock application
adb install -r test.apk # replace existing application
adb install -t test.apk # allow test packages
adb install -s test.apk # install application on sdcard
adb install -d test.apk # allow version code downgrade
adb install -p test.apk # partial application install
```
### adb uninstall \[opcje] \<PAKIET>
Opis: Komenda adb uninstall służy do odinstalowywania aplikacji z urządzenia Android.
#### Opcje:
- **-k**: Zachowuje dane i pamięć podręczną aplikacji po odinstalowaniu.
#### Przykład użycia:
```
adb uninstall com.example.app
```
Ten przykład odinstalowuje aplikację o nazwie com.example.app z urządzenia.
```bash
adb uninstall com.test.app
adb uninstall -k com.test.app Keep the data and cache directories around after package removal.
```
## Pakiety
Wyświetla wszystkie pakiety, opcjonalnie tylko te, których nazwa pakietu zawiera tekst w \<FILTER>.
### adb shell pm list packages \[opcje] \<FILTER-STR>
```bash
adb shell pm list packages <FILTER-STR>
adb shell pm list packages -f <FILTER-STR> #See their associated file.
adb shell pm list packages -d <FILTER-STR> #Filter to only show disabled packages.
adb shell pm list packages -e <FILTER-STR> #Filter to only show enabled packages.
adb shell pm list packages -s <FILTER-STR> #Filter to only show system packages.
adb shell pm list packages -3 <FILTER-STR> #Filter to only show third party packages.
adb shell pm list packages -i <FILTER-STR> #See the installer for the packages.
adb shell pm list packages -u <FILTER-STR> #Also include uninstalled packages.
adb shell pm list packages --user <USER_ID> <FILTER-STR> #The user space to query.
```
### adb shell pm path \<PAKIET>
Wyświetla ścieżkę do pliku APK dla podanego .
```bash
adb shell pm path com.android.phone
```
### adb shell pm clear \<PACKAGE>
Usuń wszystkie dane związane z pakietem.
```bash
adb shell pm clear com.test.abc
```
# Menedżer plików
### adb pull \<zdalny> \[lokalny]
Pobierz określony plik z emulatora/urządzenia na swój komputer.
```bash
adb pull /sdcard/demo.mp4 ./
```
### adb push \<lokalne> \<zdalne>
Przesyła określony plik z komputera na emulator/urządzenie.
```bash
adb push test.apk /sdcard
```
# Zrzut ekranu/Nagrywanie ekranu
### adb shell screencap \<nazwa_pliku>
Robienie zrzutu ekranu urządzenia.
```bash
adb shell screencap /sdcard/screen.png
```
### adb shell screenrecord \[opcje] \<nazwa_pliku>
Nagrywanie ekranu urządzeń z systemem Android w wersji 4.4 (poziom API 19) i nowszych.
```bash
adb shell screenrecord /sdcard/demo.mp4
adb shell screenrecord --size <WIDTHxHEIGHT>
adb shell screenrecord --bit-rate <RATE>
adb shell screenrecord --time-limit <TIME> #Sets the maximum recording time, in seconds. The default and maximum value is 180 (3 minutes).
adb shell screenrecord --rotate # Rotates 90 degrees
adb shell screenrecord --verbose
```
(press Ctrl-C to stop recording)
**Możesz pobrać pliki (obrazy i filmy) za pomocą** _**adb pull**_
# Powłoka
### adb shell
Otwórz powłokę w urządzeniu
```bash
adb shell
```
### adb shell \<CMD>
Wykonaj polecenie wewnątrz urządzenia
```bash
adb shell ls
```
## pm
Następujące polecenia są wykonywane wewnątrz powłoki
```bash
pm list packages #List installed packages
pm path <package name> #Get the path to the apk file of tha package
am start [<options>] #Start an activity. Whiout options you can see the help menu
am startservice [<options>] #Start a service. Whiout options you can see the help menu
am broadcast [<options>] #Send a broadcast. Whiout options you can see the help menu
input [text|keyevent] #Send keystrokes to device
```
# Procesy
Jeśli chcesz uzyskać PID procesu swojej aplikacji, możesz wykonać polecenie:
```bash
adb shell ps
```
I wyszukaj swoją aplikację
Lub możesz zrobić
```bash
adb shell pidof com.your.application
```
I wydrukuje PID aplikacji
# System
```bash
adb root
```
Restartuje demona adbd z uprawnieniami roota. Następnie musisz ponownie połączyć się z serwerem ADB i będziesz miał uprawnienia roota (jeśli są dostępne).
```bash
adb sideload <update.zip>
```
# Przywracanie/aktualizowanie pakietów Android update.zip.
# Dzienniki
## Logcat
Aby **filtrować wiadomości tylko jednej aplikacji**, uzyskaj PID aplikacji i użyj polecenia grep (linux/macos) lub findstr (windows), aby przefiltrować wynik logcat:
```bash
adb logcat | grep 4526
adb logcat | findstr 4526
```
### adb logcat \[opcja] \[specyfikacje-filtrów]
Opis:
- Polecenie `adb logcat` służy do wyświetlania dziennika zdarzeń systemu Android na urządzeniu podłączonym do komputera za pomocą ADB (Android Debug Bridge).
Opcje:
- `-v <format>`: Określa format wyjścia dziennika zdarzeń. Dostępne formaty to `brief`, `process`, `tag`, `thread`, `raw`, `time`, `long`, `threadtime` i `year`.
- `-d`: Wyświetla tylko bieżące zdarzenia i kończy się.
- `-f <file>`: Zapisuje dziennik zdarzeń do określonego pliku.
- `-r <kbytes>`: Ogranicza rozmiar pliku dziennika zdarzeń do określonej liczby kilobajtów.
- `-n <count>`: Ogranicza liczbę plików dziennika zdarzeń do określonej liczby.
- `-c`: Czyści dziennik zdarzeń przed rozpoczęciem wyświetlania.
- `-b <buffer>`: Wyświetla tylko zdarzenia z określonego bufora. Dostępne bufory to `main`, `system`, `radio`, `events` i `crash`.
- `-s <filter-spec>`: Wyświetla tylko zdarzenia pasujące do określonej specyfikacji filtru.
- `-e <filter-spec>`: Wyklucza zdarzenia pasujące do określonej specyfikacji filtru.
- `-m <count>`: Ogranicza liczbę zdarzeń wyświetlanych na ekranie do określonej liczby.
- `--pid <pid>`: Wyświetla tylko zdarzenia związane z określonym identyfikatorem procesu (PID).
- `--regex <regex>`: Wyświetla tylko zdarzenia, których tagi pasują do określonego wyrażenia regularnego.
Przykłady użycia:
- `adb logcat`: Wyświetla cały dziennik zdarzeń systemu Android.
- `adb logcat -v brief -s TAG`: Wyświetla tylko zdarzenia związane z określonym tagiem w skróconym formacie.
- `adb logcat -d > log.txt`: Zapisuje bieżące zdarzenia do pliku o nazwie "log.txt".
- `adb logcat -b main -b system`: Wyświetla tylko zdarzenia z buforów "main" i "system".
```bash
adb logcat
```
Notatki: naciśnij Ctrl-C, aby zatrzymać monitorowanie
```bash
adb logcat *:V # lowest priority, filter to only show Verbose level
adb logcat *:D # filter to only show Debug level
adb logcat *:I # filter to only show Info level
adb logcat *:W # filter to only show Warning level
adb logcat *:E # filter to only show Error level
adb logcat *:F # filter to only show Fatal level
adb logcat *:S # Silent, highest priority, on which nothing is ever printed
```
### adb logcat -b \<Bufor>
Komenda `adb logcat -b \<Buffer>` służy do wyświetlania logów z określonego bufora w systemie Android za pomocą narzędzia ADB (Android Debug Bridge). Bufory to miejsca, w których system przechowuje różne rodzaje logów, takie jak logi zdarzeń, logi systemowe, logi aplikacji itp.
Aby użyć tej komendy, należy zastąpić `<Buffer>` odpowiednim identyfikatorem bufora. Dostępne bufory to:
- `main`: Główny bufor, który zawiera logi zdarzeń systemowych i aplikacji.
- `radio`: Bufor zawierający logi związane z komunikacją radiową, takie jak połączenia telefoniczne, wiadomości SMS itp.
- `events`: Bufor zawierający logi zdarzeń systemowych.
- `system`: Bufor zawierający logi systemowe.
- `crash`: Bufor zawierający logi związane z awariami aplikacji.
Przykład użycia komendy `adb logcat -b main`:
```bash
adb logcat -b main
```
Ta komenda wyświetli logi z głównego bufora, które mogą być przydatne podczas analizy i debugowania aplikacji na urządzeniu Android.
```bash
adb logcat -b # radio View the buffer that contains radio/telephony related messages.
adb logcat -b # event View the buffer containing events-related messages.
adb logcat -b # main default
adb logcat -c # Clears the entire log and exits.
adb logcat -d # Dumps the log to the screen and exits.
adb logcat -f test.logs # Writes log message output to test.logs .
adb logcat -g # Prints the size of the specified log buffer and exits.
adb logcat -n <count> # Sets the maximum number of rotated logs to <count>.
```
## dumpsys
dumpuje dane systemowe
### adb shell dumpsys \[opcje]
```bash
adb shell dumpsys
adb shell dumpsys meminfo
adb shell dumpsys battery
```
Notatki: Urządzenie mobilne z włączonymi opcjami programisty, działające na systemie Android w wersji 5.0 lub wyższej.
```bash
adb shell dumpsys batterystats collects battery data from your device
```
Notatki: [Battery Historian](https://github.com/google/battery-historian) konwertuje te dane na wizualizację HTML. **KROK 1** _adb shell dumpsys batterystats > batterystats.txt_ **KROK 2** _python historian.py batterystats.txt > batterystats.html_
```bash
adb shell dumpsys batterystats --reset erases old collection data
```
adb shell dumpsys activity
# Backup
Zrób kopię zapasową urządzenia z systemem Android za pomocą adb.
```bash
adb backup [-apk] [-shared] [-system] [-all] -f file.backup
# -apk -- Include APK from Third partie's applications
# -shared -- Include removable storage
# -system -- Include system Applciations
# -all -- Include all the applications
adb shell pm list packages -f -3 #List packages
adb backup -f myapp_backup.ab -apk com.myapp # backup on one device
adb restore myapp_backup.ab # restore to the same or any other device
```
Jeśli chcesz sprawdzić zawartość kopii zapasowej:
```bash
( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 myapp_backup.ab ) | tar xfvz -
```
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
</details>