شعار مشروع fl3xbl0w

كسر حماية أندرويد - fl3xbl0w

تم الإطلاق في ٢٨ مايو ٢٠٢٢

مشروع هندسة عكسية. بدأ بجهاز المشي Bowflex Treadmill 22 ولكن تم تعميمه لأي جهاز أندرويد تبيعه شركة Nautilus Inc. (Nautilus, Bowflex, Schwinn).

تعتمد هذه الطريقة على أن مواصفات وحدة التحكم Bowflex بطيئة جدًا بالنسبة لبرامج اليوم (فهي تحتوي فقط على 2 جيجابايت من ذاكرة الوصول العشوائي على لوحة أندرويد). وبسبب ذلك، وإذا كنا أسرع من الجهاز اللوحي، يمكننا فك تشفير الجهاز من خدمة AppMonitorService التابعة لشركة Nautilus.

هل يمكن اعتباره هجومًا بالقوة الغاشمة؟

يمكنك إعادة تشغيل الجهاز في أي وقت خلال العملية، وسيكون كل شيء كما يجب أن يكون. لا يوجد خطر على البرنامج من القيام بذلك. جربها!

المتطلبات

  • لوحة مفاتيح USB (سلكية أو لاسلكية عبر جهاز دونجل USB) مع أزرار وسائط للصفحة الرئيسية، الرجوع.
  • أصابع سريعة! (يجب أن يحدث “الجزء المكثف” في حوالي ثانية)
  • كمبيوتر مع adb (رابط التحميل)

لقد استخدمت لوحة مفاتيح Logitech K600، ولكن أي لوحة مفاتيح مع تلك المفاتيح يجب أن تعمل:

لوحة مفاتيح Logitech K600

يبدو أن لوحات المفاتيح البلوتوث غير قادرة على الإقران من خلال JRNY.

نصائح

  • لا تحاول “الحصول عليها بشكل صحيح” من البداية. يستغرق الأمر بضع محاولات لمعرفة “أين تظهر الأزرار على الشاشة” حتى تتمكن من بناء بعض الذاكرة العضلية لإجراءات النقر.
  • لا تضرب الشاشة بقوة! السرعة لا تعني كسرها. أنا لست مسؤولاً عن الأشخاص الذين يضربون شاشاتهم بقوة.

التعليمات

أولاً، دعونا نقوم بتشغيل الجهاز ونوصل لوحة المفاتيح USB بوحدة التحكم Bowflex. يمكنك العثور عليها على الجانب الأيمن:

يشير إلى موقع منفذ USB لوحدة التحكم

دعونا نتأكد من أن لوحة المفاتيح تعمل بالضغط على زر “الصفحة الرئيسية” على لوحة المفاتيح. يجب أن يؤدي ذلك إلى إعادة تشغيل تطبيق JRNY.

رسوم متحركة لوحدة التحكم

لدى أندرويد اختصار لإغلاق التطبيق الحالي من خلال زر “الرجوع” إذا ضغطت عليه لثانية أو نحو ذلك. لنلعب قليلاً مع زر “الرجوع” - سنستمر في إغلاق تطبيق JRNY بمجرد إعادة فتحه حتى يبدأ ظهور حوار جديد:

رسوم متحركة لوحدة التحكم

حسنًا، الآن الجزء الممتع: هذا الحوار ينتمي إلى “نظام التحقق من الأخطاء” القياسي في أندرويد. لقد “أجبرنا أندرويد على التفكير” بأن NautilusLauncher سيء (جيد!). دعونا نستغل ذلك من خلال هذا الحوار.

بمجرد ظهوره، انقر على “معلومات التطبيق”. بالنقر على “معلومات التطبيق” سنفتح تطبيق الإعدادات (الذي يوجد في قائمة الرفض لخدمة AppMonitorService). سيغلق في حوالي ثانية، لذا يجب أن نكون سريعين! انقر على زر “إيقاف القوة”، ثم انقر على “موافق”.

رسوم متحركة لوحدة التحكم

بمجرد أن تتمكن من النقر على “موافق”، يمكنك الراحة (تمرين جيد، أليس كذلك؟). الآن دعونا نتابع مع الاكتشافات على Reddit. سنقوم بتفعيل adb بالنقر على أيقونة “العدسة المكبرة” في الزاوية العلوية اليمنى والبحث عن “خيارات المطور”:

رسوم متحركة لوحدة التحكم

ابحث عن عنوان IP لوحدة التحكم. أسهل طريقة هي من خلال إعدادات الواي فاي:

رسوم متحركة لوحدة التحكم

الآن بعد أن تم تفعيل 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

سترى واجهة المستخدم تظهر:

رسوم متحركة لوحدة التحكم

هناك خطوة أخيرة - تغيير واجهة الإطلاق الافتراضية. ابحث عن “التطبيقات الافتراضية” واضبط Quickstep كتطبيق الصفحة الرئيسية:

رسوم متحركة لوحدة التحكم

أنت الآن حر!

سيظل هذا الحال كما هو طالما تم إيقاف NautilusLauncher بالقوة. يستمر من خلال إعادة التشغيل.

إذا أردت العودة إلى “المخزون” فقط افتح تطبيق NautilusLauncher (أقترح بشدة أن تكون قد أنشأت ملف /sdcard/Pictures/nautilus مسبقًا):

رسوم متحركة لوحدة التحكم

ملاحظات حول “نظام الإغلاق”

NautilusLauncher هو “مشغل أندرويد” الافتراضي، مما يعني أنه إذا أغلق تطبيق 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"};

وبالتالي فإن تلك الخدمة “تحمي بنشاط” الإغلاق. مع كل إغلاق للتطبيق (من خلال الضغط المستمر على زر “الرجوع”)، سيكون هناك محاولة لإعادة فتح JRNY. من خلال إجباره على الإغلاق، نقوم أيضًا بتعطيل جميع الخدمات الأمامية.

(أي أخطاء إملائية قد تراها في نسخ الكود تأتي من مطوري Nautilus الخاصين، وليس مني)

المحتوى مترجم بواسطة gpt-4-1106-preview

©2022-2024 سيباستيان بارينيشيا. جميع الحقوق محفوظة.

مبني بواسطة Astro v4.15.9.