リバースエンジニアリングプロジェクト。Bowflex Treadmill 22から始まりましたが、最終的にはNautilus Inc.(Nautilus、Bowflex、Schwinn)によって販売されているすべてのAndroidマシンに一般化されました。
この方法は、Bowflexコンソールのスペックが今日のソフトウェアに対して遅すぎることに依存しています(Androidボードには2GBのRAMしかありません)。そのため、タブレットよりも速く操作できれば、NautilusのAppMonitorService
からジェイルブレイクが可能です。
これはブルートフォース攻撃と呼べるでしょうか?
プロセスの途中でいつでもマシンを再起動できますが、すべてが元通りになります。ソフトウェア側でリスクはありません。試してみてください!
私はLogitech K600を使用しましたが、これらのキーがあるキーボードならどれでも動作するはずです:
BluetoothキーボードはJRNYを通じてペアリングできないようです。
まず、マシンをオンにして、USBキーボードをBowflexコンソールに接続しましょう。右側にあります:
キーボードが動作するか確認するために、キーボードの「ホーム」ボタンを押してみましょう。これにより、JRNYアプリが再起動するはずです。
Androidには、現在のアプリを閉じるショートカットがあり、「バック」ボタンを1秒ほど押し続けると動作します。 「バック」ボタンを使って遊んでみましょう。JRNYアプリが再起動するたびにすぐに閉じる操作を繰り返し、新しいダイアログが表示されるまで続けます:
さて、ここからが楽しい部分です:そのダイアログはAndroidの標準的な「フォールト検証システム」に属しています。私たちはNautilusLauncherが悪い(良い!)とAndroidに「思わせる」ことに成功しました。このダイアログを利用してエクスプロイトします。
ダイアログが表示されたらすぐに「アプリ情報」をタップします。「アプリ情報」をクリックすると、設定アプリが開きます(これはAppMonitorService
の拒否リストにあります)。約1秒で閉じるので、素早く操作する必要があります!「強制停止」ボタンをタップし、その後「OK」をタップします。
「OK」をクリックできたら、少し休憩できます(良い運動ですね)。次にRedditで見つけた情報に進みます。右上の「虫眼鏡」アイコンをクリックして「開発者オプション」を検索し、adbを有効にします:
コンソールのIPアドレスを見つけます。最も簡単な方法はWi-Fi設定からです:
adbが有効になり、IPアドレスがわかったら、コンピュータに移動してadbで接続します。ターミナルを開いてadb connect <IPアドレス>
を実行します(私の場合は10.0.0.205):
> adb connect 10.0.0.205
connected to 10.0.0.205:5555
リモートでadbに初めて接続する際には、画面上で確認を求められます。
次に、/sdcard/Pictures/
内にnautilus
という空のファイルを作成します。「なぜ」についてはBowflexの癖で詳しく説明しています。
> 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
UIが表示されます:
最後のステップは、デフォルトのランチャーを変更することです。「デフォルトアプリ」を検索し、Quickstepをホームアプリとして設定します:
これで自由になりました!
この状態は、NautilusLauncherが強制停止されている限り維持されます。再起動しても持続します。
「元の状態」に戻したい場合は、NautilusLauncher
アプリを開くだけです(事前に/sdcard/Pictures/nautilus
ファイルを作成しておくことを強くお勧めします):
NautilusLauncher
はデフォルトの「Androidランチャー」であり、JRNYアプリが閉じるとすぐに「再起動」します。
また、NautilusLauncher
apk内には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"};
このサービスは「ロックダウンを積極的に保護」しています。各アプリの終了(「バック」ボタンを押し続けることで)ごとに、JRNYを再起動しようとします。強制終了することで、すべてのフォアグラウンドサービスも無効化されます。
(コードバックアップに見られる誤字は、Nautilusの開発者によるものであり、私のものではありません)
©2022-2024 セバスティアン・バレネチェア. すべての権利を保有.
構築: Astro v4.16.13.