逆向工程项目。起初是针对Bowflex Treadmill 22,但后来泛化为适用于Nautilus Inc.(Nautilus、Bowflex、Schwinn)销售的任何Android设备。
这种方法依赖于Bowflex控制台的规格对于当今的软件来说太慢了(安卓板上只有2Gb的RAM)。因此,如果我们的速度比平板电脑快,我们就可以从Nautilus的AppMonitorService
中越狱。
这可以称为蛮力攻击吗?
在这个过程中,你可以随时重启机器,一切都会恢复原样。因此,这样做在软件方面没有风险。试一试吧!
我使用的是罗技K600,但任何带有这些按键的键盘都应该可以工作:
蓝牙键盘似乎无法通过JRNY配对。
首先,让我们打开机器并将USB键盘连接到Bowflex控制台。你可以在右侧找到它:
让我们通过按键盘上的“主页”按钮来确保键盘工作。它应该会导致JRNY应用重新启动。
安卓有一个通过“返回”按钮关闭当前应用的快捷方式,如果你按住它一秒钟左右。 让我们稍微玩一下“返回”按钮 - 我们将不断关闭JRNY应用,直到新的对话框开始出现:
好的,现在有趣的部分:那个对话框属于安卓原生的“故障验证系统”。我们刚刚“迫使安卓认为”NautilusLauncher是不好的(好!)。让我们通过那个对话框来利用。
一旦它出现,点击“应用信息”。通过点击“应用信息”,我们将打开设置应用(它在AppMonitorService
拒绝列表上)。它将在大约一秒钟内关闭,所以我们必须快!点击“强制停止”按钮,然后点击“确定”。
一旦你可以点击“确定”,你就可以休息了(好锻炼,是吧?)。现在让我们继续在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
是默认的“安卓启动器”,这意味着如果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 Sebastian Barrenechea. 保留所有权利.
构建于 Astro v4.16.13.