fl3xbl0w Projektlogo

Android Jailbreak - fl3xbl0w

Veröffentlicht am 28. Mai 2022

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!

Voraussetzungen

  • Eine USB-Tastatur (kabelgebunden oder kabellos über einen USB-Dongle) mit Medientasten für Home, Zurück.
  • Schnelle Finger! (der “intensive Teil” muss in etwa einer Sekunde passieren)
  • Ein Computer mit adb (Download-Link)

Ich habe eine Logitech K600 verwendet, aber jede Tastatur mit diesen Tasten sollte funktionieren:

Logitech K600 Tastatur

Bluetooth-Tastaturen scheinen sich nicht über JRNY koppeln zu können.

Tipps

  • Versuchen Sie nicht, es von Anfang an “richtig zu machen”. Es dauert ein paar Versuche, um herauszufinden, “wo die Tasten auf dem Bildschirm erscheinen”, damit Sie etwas Muskelgedächtnis für die Tippaktionen aufbauen können.
  • SCHLAGEN SIE NICHT HART AUF DEN BILDSCHIRM! Schnell zu sein bedeutet nicht, ihn zu zerbrechen. Ich bin nicht verantwortlich für Personen, die zu hart auf ihre Bildschirme schlagen.

Anleitung

Zuerst schalten wir die Maschine ein und verbinden die USB-Tastatur mit der Bowflex-Konsole. Sie finden sie auf der rechten Seite:

Zeigt, wo sich der USB-Anschluss der Konsole befindet

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.

Konsolenanimation

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:

Konsolenanimation

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”.

Konsolenanimation

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:

Konsolenanimation

Finden Sie die IP-Adresse der Konsole. Der einfachste Weg ist über die Wi-Fi-Einstellungen:

Konsolenanimation

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:

Konsolenanimation

Es gibt einen letzten Schritt - das Ändern des Standard-Launchers. Suchen Sie nach “Standard-Apps” und stellen Sie Quickstep als Home-App ein:

Konsolenanimation

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):

Konsolenanimation

Anmerkungen zum “Lockdown-System”

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)

Inhalt übersetzt von gpt-4-1106-preview

©2022-2024 Sebastian Barrenechea. Alle Rechte vorbehalten.

Erstellt mit Astro v4.15.9.