In Android ist dev/binder
auch für die Layer-Kommunikation zuständig. Ist es möglich, Nachrichten zu hören? Ich weiß, dass sie entschlüsselt werden müssen, aber wie kann ich diese Nachrichten bekommen? Wenn beispielsweise eine App eine Nachricht sendet, wird sie zu einer Geolokalisierung. Ich habe auch root auf meinem Android-Gerät.
Kurz: Nein, es sollte nicht möglich sein, auch nicht mit root.
Es gibt nicht so viele Informationen über Binder im Detail im Netz, aber es gibt einige, besonders über die Sicherheit. Siehe dieses oder Punkt 3.8 hier . Sie können auch die Quelle des Kerneltreibers und die Quelle von openbinder lesen.
Sie können die meisten Binder-Transaktionen dekodieren, die mit dieser Version von strace ausgeführt werden: Ссылка
Es verfügt über Verbesserungen, um die ioctl
-Aufrufe zu decodieren, mit denen Prozesse Anforderungen an den Binder-Kernel-Treiber stellen. Stellen Sie sicher, dass Sie den Zweig android
verwenden, sonst können Sie diese Änderungen nicht nutzen.
Sie sollten in der Lage sein, dies mit einer eigenständigen NDK-Toolchain zu erstellen. Siehe docs/STANDALONE-TOOLCHAIN.html
in der Android NDK-Dokumentation.
Wenn Sie einen benutzerdefinierten Kernel installieren möchten, bietet der Binder-Treibercode ( drivers/staging/android/binder.c
) ziemlich gute Debugging-Funktionen, einschließlich bedingter Nachrichten und Funktionen, die Binder-Transaktionen usw. drucken können.
Insbesondere erhalten Sie verschiedene Arten von Debug-Meldungen im Kernel-Protokoll, indem Sie binder_debug_mask
mit der entsprechenden Kombination der folgenden Enumeratoren setzen:
Sie können auch einige print_binder_*
-Funktionen, die in binder.c
enthalten sind, an strategischen Stellen im gesamten Code streuen. Zum Beispiel print_binder_buffer()
oder print_binder_transaction()
. Sie würden wahrscheinlich diese auf der Grundlage einer bestimmten UID oder PID konditionell machen wollen, da sonst viel LOS durch den Baumstamm fliegt.
Warum werden immer wieder falsche Antworten als richtig anerkannt?
Jtrace - nicht zu verwechseln mit bin dump - erfordert keine Änderung von Android was auch immer. Und es kann Binder-Nachrichten ausspionieren - mit der Einschränkung, dass Sie einen der Endpunkte verfolgen müssen.
Bindump verwendet debugfs, zeigt aber nur Endpunkte an. @Adrian - Ich fürchte, du hast die falsche Schlussfolgerung.
Jtrace fängt eingehende und ausgehende Sys-Aufrufe ab - und löst dann die Bindernachrichten durch Überprüfen des Prozessspeichers (mit ptrace (2)). Wenn du ptrace (2) in deinem Kernel hast (was du tust, weil der Debugserver es dummerweise benötigt) und du root bist, kannst du Nachrichten ausspionieren. Nochmal - Sie müssen auf einem Endpunkt sein.
Und @Luminger - während er auf dem Thema - nur weil man keine Informationen finden kann, bedeutet nicht, dass es keine Informationen gibt. Es gibt viele Informationen auf Binder auf NewAndroidBook.com - neben dem Buch, schauen Sie sich den Binder Präsentation Link an.
@Adrian, einige gute Arbeit w.r.t das Problem wurde von anderen Entwicklern / Forschern gemacht, so dass Sie ihre Ergebnisse nutzen konnten.
Zunächst würde ich empfehlen, sich die großartige Arbeit von Jonathan Levin (aka Technologeeks ), nämlich sein Buch über die Android Interna, die vor kurzem frei wurden und auf der begleitenden Webseite des Buches zugänglich waren: newandroidbook .com . Von dort erhalten Sie Links, Beschreibungen und Anwendungsbeispiele zu
Dies ist eine einfache Ableitung des Befehls
service
, der ein Handle für den Systemdienst der Wahl erhält und dann seinen eigenen Eintrag im Verzeichnis/sys/kernel/debug/binder/proc
prüft. Da alle Binder-Debug-Daten weltweit lesbar sind, können Sie dieses Tool auch auf nicht verwalteten Geräten ausführen.
strace
, deren einer der Vorteile gegenüber strace
ist
(automatisch erkannt).
Ein weiteres großartiges Werk, das von Opersys gemacht wurde (mit Karim Yaghmour ), das ist es definitiv wert, darauf hingewiesen zu werden Betrachten ist
Dieses Werkzeug funktioniert als App oder zusammen mit HTML GUI, um eine grafische Ansicht von Verbindungen in Echtzeit anzuzeigen.
Tags und Links android android-source android-binder