Ich möchte eine Root-Shell bekommen, da mein Adbd abstürzt. Aber die -shell
Option funktioniert nicht. Inzwischen habe ich herausgefunden, dass man eine Shell bekommen kann, indem man verwendet -show-kernel
. Aber ich möchte mit der Root-Shell per TCP kommunizieren. Es gibt auch ein offenes Problem bei Google: https://code.google.com/p/android/issues/detail?id=202760
Wenn Sie einen Android-Emulator (SDK 24.4.1) unter Linux über die Befehlszeile starten, sollten Sie in der Lage sein, eine Root-Shell mithilfe der -shell
Befehlszeilenoption abzurufen. So steht es zumindest im Handbuch
Erstellen Sie eine Root-Shell-Konsole auf dem aktuellen Terminal. Sie können diesen Befehl auch dann verwenden, wenn der adb-Daemon im emulierten System defekt ist. Das Drücken von Strg-C aus der Shell stoppt den Emulator anstelle der Shell
Aber beim Starten des Emulators wie
emulator -netdelay none -netspeed full -avd nougat-x86_64 -gpu off -no-window -shell
Ich sehe die Shell-Ausgabe des Android-Emulators beim Booten, aber ich kann keine Befehle an ihn senden, dh ls
.
Auch das Öffnen eines TCP-Ports für die Shell und die Kommunikation über Telnet zeigt das gleiche Verhalten.
emulator -netdelay none -netspeed full -avd nougat-x86_64 -gpu off -no-window -shell-serial tcp::4444,server,nowait
telnet localhost 4444
Es gibt nicht viele Informationen zu diesem Thema im Internet, aber vielleicht hat sich schon jemand mit diesem Thema beschäftigt.
Aus der Android-Quellzeile 698 scheint die -shell
Option dieselbe wie -logcat
die Option zu sein, daher denke ich, dass die Dokumentation nicht gut beschrieben ist und die Option Ihnen natürlich -shell
keine interaktive Root-Shell von der virtuellen Serie bringt. Vielleicht irre ich mich, ich habe das nur auf macOS getestet.
Mit einem weiteren Test, der dem Beitrag dieses Typen entspricht , -show-kernel
erhalten Sie tatsächlich das Kernel-Protokoll und eine interaktive Root-Konsole.
Marvin S.
Chris Stratton
adb shell
natürlich. Wenn ich mich erinnere, würde Ihnen ein Emulator diese Shell normalerweise standardmäßig als root geben. Wenn nicht, tun Sie dies für eine Konfiguration, die das Anbieten einer Root-Shell unterstützt,adb root
zuerst (ziemlich offensichtlich funktioniert dies nicht auf einem Verbrauchergerät, das so konfiguriert ist, wie Android für die Konfiguration von Verbrauchergeräten entwickelt wurde).