Проект обратной инженерии. Началось все с беговой дорожки Bowflex Treadmill 22, но в итоге было обобщено для любого Android-устройства, продаваемого компанией Nautilus Inc. (Nautilus, Bowflex, Schwinn).
Этот метод основан на том, что характеристики консоли Bowflex слишком слабы для современного программного обеспечения (на борту Android всего 2 Гб оперативной памяти). Именно поэтому, если мы действуем быстрее планшета, мы можем сделать jailbreak через AppMonitorService
от Nautilus.
Можно ли это назвать атакой методом грубой силы?
Вы можете перезагрузить машину в любой момент процесса, и все будет так, как должно быть. Нет риска для программного обеспечения при таких действиях. Попробуйте!
Я использовал Logitech K600, но подойдет любая клавиатура с такими клавишами:
Клавиатуры Bluetooth, кажется, не могут подключаться через JRNY.
Сначала включим машину и подключим USB-клавиатуру к консоли Bowflex. Вы найдете ее с правой стороны:
Убедимся, что клавиатура работает, нажав кнопку “Home” на клавиатуре. Это должно вызвать перезапуск приложения JRNY.
В Android есть сочетание клавиш для закрытия текущего приложения через кнопку “Back”, если удерживать ее в течение секунды или около того. Поиграем немного с кнопкой “Back” - мы будем непрерывно закрывать приложение JRNY, как только оно снова откроется, пока не начнет появляться новый диалог:
Хорошо, теперь веселая часть: Этот диалог принадлежит стандартной системе “проверки ошибок” Android. Мы просто “заставили Android думать”, что NautilusLauncher плох (хорошо!). Давайте воспользуемся этим диалогом.
Как только он появится, нажмите на “Информация о приложении”. Нажав на “Информация о приложении”, мы откроем приложение Настройки (которое находится в списке запрещенных AppMonitorService
). Оно закроется примерно через секунду, поэтому нужно действовать быстро! Нажмите на кнопку “ОСТАНОВИТЬ ПРИНУДИТЕЛЬНО”, а затем нажмите “ОК”.
Как только вы сможете нажать “ОК”, вы можете отдохнуть (хорошая тренировка, правда?). Теперь давайте продолжим с открытиями на Reddit. Мы собираемся включить adb, нажав на значок “лупы” в правом верхнем углу и искать “Опции разработчика”:
Найдите IP-адрес консоли. Самый простой способ - через настройки Wi-Fi:
Теперь, когда adb включен и у нас есть IP-адрес, перейдем к компьютеру и подключимся через adb. Откройте терминал и выполните adb connect <IP Address>
(в моем случае 10.0.0.205):
> adb connect 10.0.0.205
connected to 10.0.0.205:5555
При первом удаленном подключении через adb на экране будет запрошено подтверждение.
Давайте создадим пустой файл внутри /sdcard/Pictures/
с именем nautilus
. Вы можете узнать больше о “почему” в Bowflex Quirks.
> adb shell touch /sdcard/Pictures/nautilus
Теперь восстановим некоторые функции. Отправьте следующие команды через терминал:
> 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
Вы увидите появление пользовательского интерфейса:
Остался последний шаг - изменение стандартного лаунчера. Ищите “Приложения по умолчанию” и установите Quickstep как домашнее приложение:
Теперь вы свободны!
Это состояние сохранится до тех пор, пока NautilusLauncher будет принудительно остановлен. Оно сохраняется после перезагрузок.
Если вы хотите вернуться к “стоковой” версии, просто откройте приложение NautilusLauncher
(настоятельно рекомендую создать файл /sdcard/Pictures/nautilus
заранее):
NautilusLauncher
является стандартным “Android лаунчером”, что означает, что если приложение JRNY закрывается, оно немедленно “переоткроется”.
Есть еще один “замок безопасности”, фоновый сервис в apk NautilusLauncher
, называемый AppMonitorService
. Декомпилируя apk, можно увидеть три интересные переменные:
public static final int MonitorIntervalSeconds = 1;
// Некоторые другие переменные
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"};
И таким образом, этот сервис “активно защищает” блокировку. С каждым закрытием приложения (через удержание кнопки “Back”) будет попытка переоткрыть JRNY. Принудительно закрыв его, мы также деактивируем все фоновые сервисы.
(любые опечатки, которые вы можете видеть в резервных копиях кода, исходят от самих разработчиков Nautilus, а не от меня)
©2022-2024 Себастьян Барренечеа. Все права защищены.
Создано с использованием Astro v4.16.13.