SuperSU בטא: רוט Android Lollipop ב-Stock Kernel

פריצה: Chainfire הכריזה היום על SuperSU Beta 2.27, ומסירת את הצורך בשינויים ב-ramdisk הליבה כדי לעשות שימוש בגישת שורש באנדרואיד 5.0

עד עכשיו, אם רצית לקבל שורש באנדרואיד 5.0, היית צריך להבהב ליבה שונה במכשיר שלך כדי לעקוף כמה מגבלות SELinux. מפתח מוכר בכיר ב-XDA אש שרשרת הוציא לאחרונה את הדרוש קודם לכן CF-Auto-Root החבילה, אשר ביצעה את השינויים הדרושים ב-ramdisk הליבה כדי להסיר את הגבלת SELinux מהסקריפט install-recovery.sh ב-AOSP. הבוקר, לעומת זאת, צ'יינפייר העלה חיוכים לפרצופים רבים, כפי שהוא הכריז בטוויטר שזה כבר לא יהיה נחוץ בהמשך.

עד היום, Chainfire תכננה לשחרר כלי תיקון אוטומטי מבוסס ZIP, באופן אוטומטי תיקון תמונות ליבה מתוך שחזור TWRP, עד שהוא נתקל בשיטה מתאימה להסיר את הצורך זֶה.

גילוי זה אומר שמשתמשי אנדרואיד 5.0 אינם צריכים עוד להפעיל ליבה שונה כדי לקבל גישת שורש באמצעות SuperSU (או פתרונות שורש אחרים). אמנם לא בעיה ענקית במכשירי Nexus עם עומסי אתחול בלתי ניתנים לנעילה, אך הצורך בשינויים ב-ramdisk היה הנוגע למשתמשים רבים של מכשירים נעולים עם טוען אתחול, שעבורם אין ביטול נעילה זמין (כן, הם עושים זאת למרבה הצער קיימים). התשובה לתפילותיהם כעת כאן, ונוכל להציג הסבר בלעדי על השינויים הדרושים. לפחות לעת עתה (עד/אלא אם גוגל תתקן את זה), אפשר לקבל גישת שורש ואז להתקין ולהשתמש ב-SuperSU במכשיר אנדרואיד 5.0 מלאי, ללא כל התאמה של קרנל ramdisk. הסיבה לכך היא הצורך של SuperSU להפעיל שירות כ-root, כדי לאפשר גישה שורשית בלתי מוגבלת במכשירים מוגני SELinux.

בעבר, SuperSU היה ממנף את ה-AOSP המותקן מראש flash_recovery שירות (המשמש ב-AOSP לעדכון התאוששות לאחר התקנת OTA) כדי להפעיל את הדמון SuperSU (שמספק למעשה את הרשאות הבסיס לאפליקציות המבקשות זאת). עם יציאתו של Lollipop, שירות זה התווסף להקשר מוגבל של SELinux, כלומר אין לו עוד גישה בלתי מזויפת למערכת. השינויים הקודמים של הליבה ביקשו להסיר את הגבלות ה-SELinux מהסקריפט הזה.

מהדורת הבטא האחרונה של SuperSU של Chainfire פותרת זאת על ידי שימוש בשירות הליבה 'Zygote' (אחראי על השקת כל שירותי Java, ובכך כל האפליקציות המותקנות במכשיר). מכיוון ש-Zygote הוא אחד השירותים היחידים הזמינים ב-Android L, שמתחיל כ-root בתוך הקשר SELinux "init" בלתי מוגבל, זה הופך אותו למטרה עיקרית לשימוש בתפעול של SuperSU. לאחר האתחול, שירות ה-Zygote מעביר את הקשר ה-SELinux "init" שלו להקשר הסופי (המוגבל) "Zygote". Chainfire הצליחה לשנות בהצלחה את קבצי ה-Zygote, על מנת להריץ קוד כמשתמש השורש, בהקשר "init" בלתי מוגבל, ובכך החזיר את SuperSU לאנדרואיד L, ללא ליבה שינויים.

זו לא הפעם הראשונה ש-Chainfire פונה ל-Zygote כדי לפתור את הבעיות הללו; הבטא המוקדמת יותר של 2.23 השתמשה ב-Zygote כאמצעי לעקוף אולי כמה בעיות אחרות של SELinux (שגרמו לאפליקציות שורש להישבר ב-Android L). זה אפשר לחלק (אך לא לכולן) מהאפליקציות שאינן מתפקדות לעבוד - השאר דורשות כמה עדכונים על ידי המפתחים שלהן. לרוע המזל, כשהתייעצו עם קוד AOSP 5.0, התברר שגוגל כבר שברה את השיטה הזו להשתלט על שירות Zygote. בהתחשב בכל ניסיונותיו הקודמים להשתלט על זיגוטה כשלו, זהו צעד מבטיח קדימה.

Chainfire היה להוט לציין ש-SuperSU הצליחה מזה זמן רב לשנות את מדיניות SELinux במערכת פועלת (ואזהרה לגבי הקלות עם אשר יצרן OEM יכול להשבית זאת, ובאמת למנוע גישת שורש משמעותית ופשוטה), וכיצד יש לבצע כל שינוי שנעשה ב-Zygote בזהירות, בהינתן שהשירות מנוהל מהקשרים שונים, עבור משימות שונות, וזה מעלה את האפשרות של מספר (מגעיל) כישלונות עדינים. SuperSU בטא 2.27 החדש הזה הוא מבנה עבור חובבים ואנשי טכנולוגיה אחרים לשחק איתם, כדי לגלות מה נשבר. מחזיקה אצבעות - אין באגים בלתי צפויים של עצירת הופעה, וזו דרך קיימא קדימה.

שימו לב - גם אם הבטא הזה יסתדר וזיגוטה היא השדרה המועדפת להשיג גישה לשורש, בהמשך, התהליך כולו הוא רק שינוי בשורה אחת הרחק מלהיות שבור על ידי גוגל, מה שיהפוך את ה-ramdisks של ליבת תיקון לעתיד עבור גישת שורש באנדרואיד (ובכך ישלול את השורש ל-bootloader-נעול מכשירים). ואכן, כהודעה ראשונית, ייתכן שהתהליך החדש אפילו לא יעבוד על מבנה AOSP עדכני לחלוטין, בגלל SELinux גדול למדי. שינויים במהלך החודשים האחרונים, שלא נכללו במכשירים הקמעונאיים, אך ללא ספק יהיו שם בעתיד משחרר. עם זאת, במוקדם או במאוחר, סביר להניח ש-ramdisks של ליבה שעברו שינוי יהיו נחוצים עבור ה-root, אבל הבטא החדשה הזו עשויה להציע השהייה קצרה של ביצוע לפני שנצטרך ללכת בכיוון הזה.

לבדוק את הערות השחרור למידע נוסף על הסיכונים הכרוכים בבדיקת זה, ולקישורים. מפתחים צריכים גם להיות מודעים לכך ש-Chainfire כרגע עובד קשה על מדריך "כיצד לעשות SU". (עודכן במלואו עבור אנדרואיד 5.0), שאמור להיות זמין במהלך הימים הקרובים.

[תודה ענקית ל-Chainfire על עבודתו כאן, וסיוע בהכנת מאמר זה.]