hacktricks/mobile-pentesting/android-app-pentesting/adb-commands.md
2023-06-03 13:10:46 +00:00

14 KiB

Adb se trouve généralement dans :

#Windows
C:\Users\<username>\AppData\Local\Android\sdk\platform-tools\adb.exe

#MacOS
/Users/<username>/Library/Android/sdk/platform-tools/adb

Connexion

Connect to a device via TCP/IP

Se connecter à un appareil via TCP/IP

adb connect <device_ip_address>

Connect to a device via USB

Se connecter à un appareil via USB

adb devices

Connect to a device as root

Se connecter à un appareil en tant que root

adb root

File Management

Gestion de fichiers

Push a file to the device

Envoyer un fichier vers l'appareil

adb push <local_file_path> <remote_file_path>

Pull a file from the device

Récupérer un fichier depuis l'appareil

adb pull <remote_file_path> <local_file_path>

Install an APK

Installer un APK

adb install <path_to_apk>

Uninstall an APK

Désinstaller un APK

adb uninstall <package_name>

App Management

Gestion d'applications

List all installed packages

Lister toutes les applications installées

adb shell pm list packages

List all installed packages and their path

Lister toutes les applications installées et leur chemin

adb shell pm list packages -f

List all system packages

Lister toutes les applications système

adb shell pm list packages -s

List all third-party packages

Lister toutes les applications tierces

adb shell pm list packages -3

List all disabled packages

Lister toutes les applications désactivées

adb shell pm list packages -d

List all enabled packages

Lister toutes les applications activées

adb shell pm list packages -e

Get package information

Obtenir des informations sur une application

adb shell dumpsys package <package_name>

Launch an app

Lancer une application

adb shell monkey -p <package_name> -c android.intent.category.LAUNCHER 1

Stop an app

Arrêter une application

adb shell am force-stop <package_name>

Clear app data

Effacer les données d'une application

adb shell pm clear <package_name>

Grant a permission

Accorder une permission

adb shell pm grant <package_name> <permission>

Revoke a permission

Révoquer une permission

adb shell pm revoke <package_name> <permission>

Miscellaneous

Divers

Take a screenshot

Prendre une capture d'écran

adb shell screencap <file_path>

Record a screen video

Enregistrer une vidéo de l'écran

adb shell screenrecord <file_path>
adb devices

Voici comment lister les appareils connectés ; si "unauthorized" apparaît, cela signifie que vous devez débloquer votre mobile et accepter la connexion.

Cela indique à l'appareil qu'il doit démarrer un serveur adb sur le port 5555 :

adb tcpip 5555

Se connecter à cette adresse IP et ce port :

adb connect <IP>:<PORT>

Si vous obtenez une erreur comme celle-ci dans un logiciel Android virtuel (comme Genymotion):

adb server version (41) doesn't match this client (36); killing...

Cela est dû au fait que vous essayez de vous connecter à un serveur ADB avec une version différente. Essayez simplement de trouver le binaire adb que le logiciel utilise (allez dans C:\Program Files\Genymobile\Genymotion et recherchez adb.exe)

Plusieurs appareils

Chaque fois que vous trouvez plusieurs appareils connectés à votre machine, vous devrez spécifier sur lequel vous voulez exécuter la commande adb.

adb devices
List of devices attached
10.10.10.247:42135	offline
127.0.0.1:5555	device
adb -s 127.0.0.1:5555 shell   
x86_64:/ # whoami                                                                                                                                                                                                                            
root

Tunnelisation de port

Dans le cas où le port adb n'est accessible que depuis localhost sur l'appareil Android mais que vous avez accès via SSH, vous pouvez rediriger le port 5555 et vous connecter via adb:

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

Gestionnaire de paquets

Installer/Désinstaller

adb install [option] <chemin>

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 [options] <PACKAGE>

Désinstalle l'application spécifiée du périphérique.

Options

  • -k: Garde les données et le cache de l'application.

Exemple

adb uninstall com.example.app
adb uninstall com.test.app
adb uninstall -k com.test.app Keep the data and cache directories around after package removal.

Paquets

Affiche tous les paquets, en option seulement ceux dont le nom de paquet contient le texte dans <FILTER>.

adb shell pm list packages [options] <FILTER-STR>

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 <PACKAGE>

Affiche le chemin d'accès à l'APK du .<PACKAGE> donné.

adb shell pm path com.android.phone

adb shell pm clear <PACKAGE>

Supprime toutes les données associées à un package.

adb shell pm clear com.test.abc

Gestionnaire de fichiers

adb pull <remote> [local]

Télécharge un fichier spécifié depuis un émulateur/appareil vers votre ordinateur.

adb pull /sdcard/demo.mp4 ./

adb push <local> <remote>

Télécharge un fichier spécifié depuis votre ordinateur vers un émulateur/appareil.

adb push test.apk /sdcard

Capture d'écran / Enregistrement d'écran

adb shell screencap <nom_de_fichier>

Prendre une capture d'écran de l'affichage d'un appareil.

adb shell screencap /sdcard/screen.png

adb shell screenrecord [options] <filename>

Enregistrement de l'affichage des appareils fonctionnant sous Android 4.4 (niveau d'API 19) et supérieur.

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

(pressez Ctrl-C pour arrêter l'enregistrement)

Vous pouvez télécharger les fichiers (images et vidéos) en utilisant la commande adb pull

Shell

adb shell

Obtenir un shell à l'intérieur du dispositif

adb shell

adb shell <CMD>

Exécute une commande à l'intérieur du dispositif.

adb shell ls

pm

Les commandes suivantes sont exécutées à l'intérieur d'un shell.

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

Processus

Si vous voulez obtenir le PID du processus de votre application, vous pouvez exécuter :

adb shell ps

Et chercher votre application

Ou vous pouvez faire

adb shell pidof com.your.application

Et cela affichera le PID de l'application.

adb root

Redémarre le démon adbd avec des permissions root. Ensuite, vous devez vous reconnecter au serveur ADB et vous serez root (si disponible).

adb sideload <update.zip>

Flasher/restaurer les packages de mise à jour Android update.zip.

Journaux

Logcat

Pour filtrer les messages d'une seule application, obtenez le PID de l'application et utilisez grep (linux/macos) ou findstr (windows) pour filtrer la sortie de logcat :

adb logcat | grep 4526
adb logcat | findstr 4526

adb logcat [option] [filter-specs]

La commande adb logcat permet de visualiser les logs du système Android. Les options disponibles sont les suivantes :

  • -c : Efface les logs actuels.
  • -d : Affiche les logs actuels et quitte.
  • -f <filename> : Écrit les logs dans un fichier.
  • -r <kbytes> : Rotation des logs (par défaut 16).
  • -n <count> : Nombre de fichiers de logs à conserver (par défaut 4).
  • -v <format> : Format de sortie des logs (par défaut brief).
  • *:priority : Spécifie le niveau de priorité des logs à afficher.

Les filtres disponibles sont les suivants :

  • *:S : Silencieux (aucun log).
  • *:V : Verbose (tous les logs).
  • *:D : Debug (logs de débogage).
  • *:I : Info (logs d'information).
  • *:W : Warning (logs d'avertissement).
  • *:E : Error (logs d'erreur).
  • *:F : Fatal (logs d'erreur fatale).
  • *:A : Assert (logs d'assertion).
adb logcat

Notes: appuyez sur Ctrl-C pour arrêter la surveillance

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 <Tampon>

Le paramètre -b est utilisé pour spécifier le tampon de logs à afficher. Les tampons de logs disponibles sont main, system, radio, events et crash. Par défaut, main est utilisé.

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

permet de récupérer les données du système

adb shell dumpsys [options]

adb shell dumpsys

adb shell dumpsys meminfo

La commande adb shell dumpsys meminfo affiche des informations sur l'utilisation de la mémoire du système Android. Cela peut être utile pour diagnostiquer les problèmes de performances et les fuites de mémoire dans les applications Android. Les informations affichées incluent la quantité de mémoire utilisée par chaque processus, ainsi que des statistiques sur l'utilisation de la mémoire système globale.

adb shell dumpsys battery

Notes: Un appareil mobile avec les Options pour les développeurs activées exécutant Android 5.0 ou supérieur.

adb shell dumpsys batterystats collects battery data from your device

Notes: Battery Historian convertit ces données en une visualisation HTML. ÉTAPE 1 adb shell dumpsys batterystats > batterystats.txt ÉTAPE 2 python historian.py batterystats.txt > batterystats.html

adb shell dumpsys batterystats --reset erases old collection data

adb shell dumpsys activity

Sauvegarde

Sauvegardez un appareil Android depuis adb.

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

Si vous souhaitez inspecter le contenu de la sauvegarde :

( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 myapp_backup.ab ) |  tar xfvz -
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥