Reverse-Engineering-Projekt. Es begann mit dem Bowflex Laufband 22, wurde aber verallgemeinert für jede von Nautilus Inc. (Nautilus, Bowflex, Schwinn) verkaufte Android-Maschine.
Diese Methode beruht darauf, dass die Spezifikationen der Bowflex-Konsole für die heutige Software zu langsam sind (sie hat nur 2 GB RAM auf dem Android-Board). Deshalb können wir, wenn wir schneller als das Tablet sind, von Nautilus’ AppMonitorService
aus einen Jailbreak durchführen.
Könnte man es als Brute-Force-Angriff bezeichnen?
Sie können die Maschine jederzeit im Prozess neu starten, und alles wird so sein, wie es sein sollte. Es besteht kein Risiko auf der Softwareseite, dies zu tun. Probieren Sie es aus!
Ich habe eine Logitech K600 verwendet, aber jede Tastatur mit diesen Tasten sollte funktionieren:
Bluetooth-Tastaturen scheinen sich nicht über JRNY koppeln zu können.
Zuerst schalten wir die Maschine ein und verbinden die USB-Tastatur mit der Bowflex-Konsole. Sie finden sie auf der rechten Seite:
Stellen wir sicher, dass die Tastatur funktioniert, indem wir die “Home”-Taste auf der Tastatur drücken. Dies sollte dazu führen, dass die JRNY-App neu startet.
Android hat eine Verknüpfung, um die aktuelle App über die “Zurück”-Taste zu schließen, wenn Sie sie etwa eine Sekunde lang gedrückt halten. Spielen wir ein wenig mit der “Zurück”-Taste - wir werden die JRNY-App kontinuierlich schließen, sobald sie sich wieder öffnet, bis ein neues Dialogfeld zu erscheinen beginnt:
Ok, jetzt der lustige Teil: Dieses Dialogfeld gehört zum standardmäßigen “Fehlerüberprüfungssystem” von Android. Wir haben “Android dazu gebracht zu denken”, dass NautilusLauncher schlecht ist (gut!). Nutzen wir das durch dieses Dialogfeld aus.
Sobald es erscheint, tippen Sie auf “App-Info”. Indem wir auf “App-Info” klicken, öffnen wir die Einstellungs-App (die auf der AppMonitorService
-Verbotsliste steht). Sie wird in etwa einer Sekunde schließen, also müssen wir schnell sein! Tippen Sie auf die Schaltfläche “STOPP ERZWINGEN” und dann auf “OK”.
Sobald Sie auf “OK” klicken können, können Sie sich ausruhen (gutes Training, was?). Jetzt gehen wir weiter mit den Erkenntnissen auf Reddit. Wir werden adb aktivieren, indem wir auf das “Lupe”-Symbol in der oberen rechten Ecke klicken und nach “Entwickleroptionen” suchen:
Finden Sie die IP-Adresse der Konsole. Der einfachste Weg ist über die Wi-Fi-Einstellungen:
Jetzt, da adb aktiviert ist und wir die IP-Adresse haben, springen wir zu einem Computer und verbinden uns mit adb. Öffnen Sie ein Terminal und führen Sie adb connect <IP-Adresse>
aus (in meinem Fall 10.0.0.205):
> adb connect 10.0.0.205
connected to 10.0.0.205:5555
Bei der ersten Verbindung über adb wird auf dem Bildschirm um eine Bestätigung gebeten.
Lassen Sie uns eine leere Datei in /sdcard/Pictures/
namens nautilus
erstellen. Mehr über das “Warum” können Sie in Bowflex Eigenheiten lesen.
> adb shell touch /sdcard/Pictures/nautilus
Jetzt stellen wir einige Funktionalitäten wieder her. Senden Sie die folgenden Befehle über Ihr Terminal:
> adb shell settings put secure ntls_launcher_preference 0
> adb shell settings put secure navigationbar_switch 1
> adb shell settings put secure notification_switch 1
> adb shell settings put secure statusbar_switch 1
Sie werden die Benutzeroberfläche sehen:
Es gibt einen letzten Schritt - das Ändern des Standard-Launchers. Suchen Sie nach “Standard-Apps” und stellen Sie Quickstep als Home-App ein:
Sie sind jetzt frei!
Dieser Zustand bleibt so lange bestehen, wie NautilusLauncher zum Stoppen gezwungen wird. Er bleibt auch nach Neustarts erhalten.
Wenn Sie zu “Stock” zurückkehren möchten, öffnen Sie einfach die NautilusLauncher
-App (ich schlage dringend vor, dass Sie die Datei /sdcard/Pictures/nautilus
vorher erstellt haben):
NautilusLauncher
ist der Standard-”Android-Launcher”, was bedeutet, dass, wenn die JRNY-App geschlossen wird, sie sofort “wieder geöffnet” wird.
Es gibt auch eine weitere “Sicherheitssperre”, einen Vordergrunddienst in der NautilusLauncher
-APK, genannt AppMonitorService
. Durch das Dekompilieren der APK können Sie drei interessante Variablen sehen:
public static final int MonitorIntervalSeconds = 1;
// Einige weitere Variablen
private static String[] TargtedAppsToKill = {"com.android.vending", "com.android.settings", "com.android.chrome", "com.google.android.gm", "com.google.android.youtube"};
private static String[] TargtedAppsToBackground = {"com.google.android.googlequicksearchbox:interactor", "com.google.android.googlequicksearchbox:search", "com.google.android.googlequicksearchbox", "com.android.launcher3", "com.google.android.inputmethod.latin"};
Und so schützt dieser Dienst “aktiv” die Abschottung. Bei jeder App-Schließung (durch Halten der “Zurück”-Taste) wird versucht, JRNY wieder zu öffnen. Durch das Erzwingen seiner Schließung deaktivieren wir auch alle Vordergrunddienste.
(alle Tippfehler, die Sie im Code-Backup sehen, stammen von den eigenen Entwicklern von Nautilus, nicht von mir)
©2022-2024 Sebastian Barrenechea. Alle Rechte vorbehalten.
Erstellt mit Astro v4.16.13.