
Binder Trace is a tool for intercepting and parsing Android Binder messages. Think of it as "Wireshark for Binder".
Binder Trace est un outil permettant d'intercepter et d'analyser les messages Binder d'Android. Considérez-le comme un « Wireshark pour Binder ».

version de python >= 3.9
Vous aurez besoin d'un appareil Android rooté ou d'un émulateur.
(Linux uniquement) - installez xclip ou xsel pour la fonctionnalité « copier dans le presse-papiers »
sudo apt-get install xclip
sudo apt-get install xsel
Installez depuis PyPi
pip install binder-trace
Vérifiez quelle version de frida est installée (assurez-vous d'avoir installé les dépendances avec pip)
pip list | grep frida
Téléchargez la version correspondante de frida-server depuis la page des versions de frida
Assurez-vous qu'adb s'exécute en root, poussez frida-server vers votre appareil et exécutez-le
adb root
adb push frida-server /data/local/tmp
adb shell
chmod u+x /data/local/tmp/frida-server
/data/local/tmp/frida-server
Pour démarrer binder trace, il faut choisir un appareil et un processus auquel s'attacher. Dans l'exemple suivant, nous utilisons adb et frida-ps pour identifier un processus auquel s'attacher sur un émulateur local. Comme il s'agit d'un émulateur Android 11, nous choisissons le répertoire de structures Android 11. Choisissez le répertoire de structures qui correspond le plus à votre version d'Android. Si vous souhaitez des structures pour une autre version d'Android, faites-le-nous savoir. Une fois lancé, utilisez l'application cible pour générer des transactions Binder.
> adb devices
List of devices attached
emulator-5554 device
> frida-ps -Ua
PID Name Identifier
---- ------------- ----------------------------
8334 Messaging com.android.messaging
7941 Phone com.android.dialer
9607 Settings com.android.settings
> cd binder_trace
> binder-trace -d emulator-5554 -n Messaging -a 11
Pour filtrer, définissez tout ou partie des options interface, method, type et inclusive. Pour ne pas utiliser une option, laissez-la vide ""
> binder-trace -d emulator-5554 -n Contacts -a 13

{
"filters": [
{
"interface": "android.gui.IDisplayEventConnection",
"method": "requestNextVsync",
"type": "",
"inclusive": false
},
{
"interface": "android.content.IContentProvider",
"method": "",
"type": "call",
"inclusive": false
}
]
}
> binder-trace -d emulator-5554 -n Contacts -a 13 -c .\binder_trace\binder_trace\config.json
android.gui.IDisplayEventConnection->requestNextVsync->"" et android.content.IContentProvider->"" ->call ont été filtrés

Les interfaces Binder internes peuvent changer entre les versions mineures, et comme tout est compilé ensemble sans information de version à l'exécution, il est difficile de fournir des informations de structure 100 % précises pour chaque version de l'écosystème Android, très fragmenté.
Plus de détails sur les structures sont disponibles sur la page des structures.
| Argument | Description |
|---|
| -h | Affiche l'aide des arguments. |
| -d DEVICE | L'appareil auquel se connecter, p. ex. « emulator-5554 ». Utilisez adb devices pour lister les appareils disponibles. S'il n'est pas fourni, l'appareil USB est utilisé par défaut. |
| -p PID | Le PID du processus sur DEVICE auquel se connecter. |
| -n NAME | Le nom du processus sur DEVICE auquel se connecter, p. ex. « Messaging ». |
| -a [9, 10, 11, 12, 13, 14] | La version Android de l'appareil cible. Si aucun chemin de structures n'est fourni, les structures par défaut sont utilisées. |
| -s STRUCTPATH | Le chemin vers le répertoire des fichiers de structures. |
| -c CONFIG | Le chemin vers le fichier de configuration à utiliser pour le filtrage. |
| --spawn | Lance le processus avant de s'y attacher. L'option -n doit être présente et contenir un identifiant de processus valide. |
| Touche | Action |
|---|
up | Monter |
down | Descendre |
shift + up | Page précédente |
shift + down | Page suivante |
home | Aller en haut |
end | Aller en bas |
tab | Panneau suivant |
shift + tab | Panneau précédent |
ctrl + c | Copier le panneau dans le presse-papiers |
space | Pause/Reprise de l'enregistrement des transactions |
c | Effacer |
h | Ouvrir l'aide |
r | Recharger le fichier de configuration |
q | Quitter |
| Touche | Action |
|---|
p | Inverser l'ordre croissant/décroissant |
w | Aller à l'interface suivante |
s | Aller à l'interface précédente |
a | Activer tous les filtres |
n | Désactiver tous les filtres |
enter | Activer/désactiver le filtre |