
Binder Trace is a tool for intercepting and parsing Android Binder messages. Think of it as "Wireshark for Binder".
Binder Trace es una herramienta para interceptar y analizar mensajes de Android Binder. Piénsalo como "Wireshark para Binder".

versión de python >= 3.9
Necesitarás un dispositivo Android rooteado o un emulador.
(Solo Linux) - instala xclip o xsel para la funcionalidad "copiar al portapapeles"
sudo apt-get install xclip
sudo apt-get install xsel
Instalar desde PyPi
pip install binder-trace
Comprueba qué versión de frida está instalada (asegúrate de haber instalado los requisitos con pip)
pip list | grep frida
Descarga la versión correspondiente de frida-server desde la página de lanzamientos de frida
Asegúrate de que adb se esté ejecutando como root, envía frida-server a tu dispositivo y ejecútalo
adb root
adb push frida-server /data/local/tmp
adb shell
chmod u+x /data/local/tmp/frida-server
/data/local/tmp/frida-server
Para iniciar binder trace necesitamos elegir un dispositivo y un proceso al que conectarnos.
En el siguiente ejemplo usamos adb y frida-ps para identificar un proceso al que conectarnos en un emulador local. Como es un emulador de Android 11, elegimos el directorio de estructuras de Android 11. Elige el directorio de estructuras que más se aproxime a tu versión de Android. Si deseas estructuras para una versión diferente de Android, por favor, háznoslo saber. Una vez que esté en ejecución, comienza a usar la aplicación objetivo para generar algunas transacciones de 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
Para filtrar, define cualquiera o todas las opciones de interface, method, type e inclusive. Para no usar una opción, déjala en blanco ""
> 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->"" y android.content.IContentProvider->"" ->call han sido filtrados

Las interfaces de binder internas pueden cambiar entre versiones menores y, dado que prácticamente todo se compila junto sin información de versión en tiempo de ejecución, es difícil proporcionar información de estructuras 100% precisa para cada versión en el ecosistema altamente fragmentado de Android.
Puedes encontrar más detalles sobre las estructuras en la página de estructuras.
| Argument | Description |
|---|
| -h | Imprime la ayuda de los argumentos. |
| -d DEVICE | El dispositivo al que conectarse, p. ej. "emulator-5554". Usa adb devices para listar los dispositivos disponibles. Si no se proporciona, se usa por defecto el dispositivo USB. |
| -p PID | El pid del proceso en DEVICE al que conectarse. |
| -n NAME | El nombre del proceso en DEVICE al que conectarse, p. ej. "Messaging". |
| -a [9, 10, 11, 12, 13, 14] | La versión de Android del dispositivo objetivo. Si no se proporciona una ruta de estructuras, se usan las estructuras predeterminadas. |
| -s STRUCTPATH | La ruta al directorio de archivos de estructura. |
| -c CONFIG | La ruta al archivo de configuración para filtrar. |
| --spawn | Genera el proceso antes de conectarse. La opción -n debe estar presente y contener un identificador de proceso válido. |
| Tecla | Acción |
|---|
up | Subir |
down | Bajar |
shift + up | Página arriba |
shift + down | Página abajo |
home | Ir al principio |
end | Ir al final |
tab | Siguiente panel |
shift + tab | Panel anterior |
ctrl + c | Copiar panel al portapapeles |
space | Pausar/Reanudar grabación de transacciones |
c | Limpiar |
h | Abrir ayuda |
r | Recargar archivo de configuración |
q | Salir |
| Tecla | Acción |
|---|
p | Alternar orden asc/desc |
w | Saltar a la siguiente interfaz |
s | Saltar a la interfaz anterior |
a | Activar todos los filtros |
n | Desactivar todos los filtros |
enter | Alternar filtro |