SuperSU BETA: الجذر الروبوت المصاصة على الأسهم نواة

حتى الآن ، إذا كنت ترغب في الحصول على الجذر على نظام أندرويد 5.0 ، فأنت بحاجة إلى وميض نواة معدلة على جهازك للتغلب على بعض قيود SELinux. صدر مؤخراً مطور سلسلة مطور بارز معترف به مؤخراً عن حزمة CF-Auto-Root الضرورية مسبقًا ، والتي أدخلت تعديلات ramdisk kernel الضرورية لإزالة قيود SELinux من البرنامج النصي install-recovery.sh على AOSP. لكن صباح اليوم ، جلبت Chainfire الابتسامات إلى العديد من الوجوه ، حيث أعلن على Twitter أنه لن يكون من الضروري المضي قدمًا.

حتى يومنا هذا ، كان Chainfire قد خطط لإصدار أداة تصحيح تلقائية تستند إلى ZIP ، وذلك تلقائيًا لتصحيح صور kernel من خلال استرداد TWRP ، حتى صادفه طريقة مناسبة لإزالة الحاجة إلى ذلك.

يعني هذا الكشف أن مستخدمي Android 5.0 لم يعودوا بحاجة إلى تشغيل نواة معدلة للوصول إلى الجذر عبر SuperSU (أو حلول الجذر الأخرى). على الرغم من أن مشكلة Nexus لا تمثل مشكلة كبيرة على أجهزة تحميل التشغيل القابلة للإلغاء ، إلا أن الحاجة إلى تعديلات ramdisk كانت تهم العديد من مستخدمي الأجهزة التي تم قفل أداة الإقلاع من خلالها والتي لا يتوفر إلغاء تأمين (نعم ، إنها موجودة للأسف). الجواب على صلواتهم الآن هنا ، ويمكننا تقديم شرح حصري للتغييرات اللازمة. على الأقل في الوقت الحالي (حتى / ما لم تقم Google بتصحيح هذا) ، من الممكن الحصول على حق الوصول إلى الجذر ، ثم تثبيت SuperSU واستخدامه على جهاز يعمل بنظام Android 5.0 للأوراق المالية ، دون أي تغيير في قرص ramdisk kernel. السبب في ذلك هو الحاجة إلى SuperSU لتشغيل خدمة كجذر ، للسماح بوصول جذر غير مقيد على الأجهزة المحمية بواسطة SELinux.

في السابق ، كانت SuperSU تستفيد من خدمة AOSP flash_recovery المثبتة مسبقًا (المستخدمة في AOSP لتحديث الاسترداد بعد تثبيت OTA) لبدء البرنامج الخفي لـ SuperSU (والذي يوفر بالفعل امتيازات الجذر للتطبيقات التي تطلبها). مع إصدار Lollipop ، تمت إضافة هذه الخدمة إلى سياق SELinux المقيد ، مما يعني أنه لم يعد لديه وصول غير مقصود إلى النظام. سعت تعديلات kernel السابقة إلى إزالة قيود SELinux من هذا البرنامج النصي.

يعمل الإصدار الأخير من سلسلة SuperSU من سلسلة Firefire على حل هذه المشكلة باستخدام خدمة "Zygote" الأساسية (المسؤولة عن تشغيل جميع خدمات Java ، وبالتالي جميع التطبيقات المثبتة على جهاز). نظرًا لأن Zygote هي إحدى الخدمات الوحيدة المتوفرة على Android L ، والتي يتم تشغيلها كجذر ضمن سياق SELinux غير المطلق "init" ، فإن هذا يجعلها هدفًا رئيسيًا للاستخدام في تشغيل SuperSU. بعد الإقلاع ، تحولت خدمة Zygote إلى سياق "SELinux" الأولي الخاص بها والذي تم تحويله إلى سياق "Zygote" النهائي (المقيد). تمكنت Chainfire من تعديل ملفات Zygote بنجاح ، من أجل تشغيل الكود كمستخدم الجذر ، ضمن سياق "init" غير المقيد ، وبالتالي إعادة SuperSU إلى Android L ، دون تعديلات kernel.

ليست هذه هي المرة الأولى التي يتحول فيها Chainfire إلى Zygote لحل هذه المشكلات ؛ استخدمت النسخة التجريبية 2.23 السابقة Zygote كوسيلة للتحايل على بعض مشكلات SELinux الأخرى (والتي تسببت في كسر تطبيقات الجذر على Android L). سمح هذا لبعض (وليس جميع) التطبيقات غير العاملة بالعمل - الباقي يتطلب بعض التحديثات من قبل مطوريها. لسوء الحظ ، عندما تمت مراجعة كود AOSP 5.0 ، اتضح أن Google قد خرقت بالفعل طريقة الاستيلاء على خدمة Zygote. بالنظر إلى جميع محاولاته السابقة للاستيلاء على Zygote قد فشلت ، فإن هذه خطوة واعدة إلى الأمام.

حرص تشاينفاير على الإشارة إلى أن SuperSU تمكنت منذ فترة طويلة من تعديل سياسات SELinux على نظام تشغيل (وتحذر من السهولة التي يمكن بها لتعطيل OEM ، وتمنع حقاً الوصول إلى الجذر ذي مغزى) ، وكيف أجريت أي تعديلات يجب إجراء Zygote بعناية ، نظرًا لأن الخدمة يتم تشغيلها من سياقات مختلفة ، للقيام بمهام مختلفة ، وهذا يثير احتمال حدوث عدد من الإخفاقات الخفية (سيئة). يعد الإصدار SuperSU beta 2.27 الجديد بمثابة تصميم لعشاق الألعاب والتقنيات الأخرى للعب بها ، لمعرفة ما يكسر. عبرت الأصابع - ليس هناك أخطاء غير متوقعة تظهر ، وهذه طريقة قابلة للتطبيق إلى الأمام.

لاحظ أنه - حتى إذا نجحت هذه النسخة التجريبية وكان Zygote هو السبيل المفضل للوصول إلى الجذر ، والمضي قدمًا ، فإن العملية برمتها ليست سوى تغيير سطر واحد بعيدًا عن كسره من قِبل Google ، مما سيجعل ramdisks kernel patched مستقبل الجذر الوصول إلى Android (وبالتالي استبعاد الجذر للأجهزة المؤمّنة محمل الإقلاع). في الواقع ، قد لا تعمل العملية الجديدة ، حتى الآن ، على تطوير نظام AOSP محدّث بالكامل ، وذلك بسبب بعض تغييرات SELinux الكبيرة إلى حد ما خلال الأشهر القليلة الماضية ، والتي لم يتم تضمينها في أجهزة البيع بالتجزئة ، ولكن سيكون هناك بالتأكيد في الإصدارات المستقبلية. عاجلاً أم آجلاً ، يبدو من المحتمل أن ramdisks kernel المعدلة سيكون ضروريًا للجذر ، ولكن قد توفر هذه النسخة التجريبية الجديدة فترة قصيرة من التنفيذ قبل أن نتحرك في هذا الاتجاه.

تحقق من ملاحظات الإصدار للحصول على مزيد من المعلومات حول المخاطر التي ينطوي عليها اختبار ذلك ، وللروابط. يجب أن يدرك المطورون أيضًا أن Chainfire تعمل حاليًا على دليل "How-To SU" (تم تحديثه بالكامل لنظام Android 5.0) ، والذي يجب أن يكون متاحًا خلال الأيام القليلة المقبلة.

[شكراً جزيلاً لشينفاير على عمله هنا ، والمساعدة في إعداد هذا المقال.]