Breaking: Chainfire ได้ประกาศ SuperSU Beta 2.27 ในวันนี้ โดยไม่จำเป็นต้องแก้ไขเคอร์เนล ramdisk เพื่อใช้ประโยชน์จากการเข้าถึงรูทบน Android 5.0
จนถึงตอนนี้ หากคุณต้องการรูทบน Android 5.0 คุณต้องแฟลชเคอร์เนลที่แก้ไขแล้วบนอุปกรณ์ของคุณเพื่อแก้ไขข้อจำกัดบางประการของ SELinux นักพัฒนาอาวุโสที่ได้รับการยอมรับของ XDA เชนไฟร์ เพิ่งเปิดตัวสิ่งที่จำเป็นก่อนหน้านี้ CF-อัตโนมัติ-รูท ซึ่งทำการแก้ไขเคอร์เนล ramdisk ที่จำเป็นเพื่อลบข้อจำกัด SELinux ออกจากสคริปต์ install-recovery.sh บน AOSP อย่างไรก็ตาม เมื่อเช้านี้ Chainfire นำรอยยิ้มมาสู่ใบหน้ามากมายเช่นเดียวกับเขา ประกาศบน Twitter ว่าสิ่งนี้จะไม่จำเป็นอีกต่อไปในอนาคต
จนถึงวันนี้ Chainfire ได้วางแผนที่จะเปิดตัวเครื่องมือแก้ไข ZIP แบบอัตโนมัติโดยอัตโนมัติ แก้ไขอิมเมจเคอร์เนลจากภายในการกู้คืน TWRP จนกระทั่งเขาพบวิธีการที่เหมาะสมเพื่อขจัดความจำเป็น นี้.
การเปิดเผยนี้หมายความว่าผู้ใช้ Android 5.0 ไม่จำเป็นต้องเรียกใช้เคอร์เนลที่ได้รับการแก้ไขอีกต่อไปเพื่อเข้าถึงรูทผ่าน SuperSU (หรือโซลูชันรูทอื่น ๆ ) แม้ว่าจะไม่ใช่ปัญหาใหญ่ในอุปกรณ์ Nexus ที่มีการบูตโหลดเดอร์แบบปลดล็อคได้ แต่ความจำเป็นในการปรับเปลี่ยน ramdisk ก็คือ เกี่ยวกับผู้ใช้อุปกรณ์ที่ล็อค Bootloader จำนวนมากซึ่งไม่สามารถปลดล็อคได้ (ใช่ น่าเสียดายที่พวกเขาทำเช่นนั้น มีอยู่). คำตอบสำหรับคำอธิษฐานของพวกเขาอยู่ที่นี่แล้ว และเราสามารถนำเสนอคำอธิบายพิเศษเกี่ยวกับการเปลี่ยนแปลงที่จำเป็นได้ อย่างน้อยตอนนี้ (จนถึง/ยกเว้นว่า Google จะแพทช์นี้) คุณสามารถเข้าถึงรูทแล้วติดตั้งและใช้ SuperSU บนอุปกรณ์ Android 5.0 ได้โดยไม่ต้องปรับแต่งเคอร์เนล ramdisk ใด ๆ เหตุผลก็คือ SuperSU จำเป็นต้องเรียกใช้บริการในฐานะรูท เพื่อให้สามารถเข้าถึงรูทได้อย่างไม่จำกัดบนอุปกรณ์ที่ได้รับการป้องกันด้วย SELinux
ก่อนหน้านี้ SuperSU จะใช้ประโยชน์จาก AOSP ที่ติดตั้งไว้ล่วงหน้า แฟลช_การกู้คืน (ใช้ใน AOSP เพื่ออัปเดตการกู้คืนหลังจากการติดตั้ง OTA) เพื่อเริ่ม SuperSU daemon (ซึ่งให้สิทธิ์รูทจริงสำหรับแอปที่ร้องขอ) ด้วยการเปิดตัว Lollipop บริการนี้ได้ถูกเพิ่มเข้าไปในบริบท SELinux แบบจำกัด ซึ่งหมายความว่าไม่มีการเข้าถึงระบบโดยปราศจากการเจือปนอีกต่อไป การแก้ไขเคอร์เนลก่อนหน้านี้พยายามลบข้อจำกัด SELinux ออกจากสคริปต์นี้
SuperSU รุ่นเบต้าล่าสุดของ Chainfire แก้ไขปัญหานี้โดยใช้บริการหลัก 'Zygote' (รับผิดชอบในการเปิดตัวบริการ Java ทั้งหมด และแอปทั้งหมดที่ติดตั้งบนอุปกรณ์) เนื่องจาก Zygote เป็นหนึ่งในบริการเดียวที่มีบน Android L ซึ่งเริ่มต้นจากการรูทภายใน บริบท SELinux "init" ที่ไม่จำกัด ทำให้เป็นเป้าหมายหลักสำหรับใช้ในการดำเนินการ ซุปเปอร์ซู หลังจากบูต บริการ Zygote จะมีบริบท "init" ของ SELinux เปลี่ยนไปเป็นบริบท "Zygote" สุดท้าย (จำกัด) Chainfire สามารถแก้ไขไฟล์ Zygote ได้สำเร็จ เพื่อรันโค้ดในฐานะผู้ใช้รูท ภายในบริบท "init" ที่ไม่จำกัด จึงนำ SuperSU กลับสู่ Android L โดยไม่ต้องใช้เคอร์เนล การปรับเปลี่ยน
นี่ไม่ใช่ครั้งแรกที่ Chainfire หันไปหา Zygote เพื่อแก้ไขปัญหาเหล่านี้ เวอร์ชัน 2.23 เบต้าก่อนหน้านี้ใช้ Zygote เพื่อหลีกเลี่ยงปัญหา SELinux อื่นๆ (ซึ่งทำให้แอปรูททำงานบน Android L) ซึ่งช่วยให้แอปที่ไม่ทำงานบางส่วน (แต่ไม่ใช่ทั้งหมด) ทำงานได้ ส่วนที่เหลือต้องได้รับการอัปเดตจากนักพัฒนา น่าเสียดายที่เมื่อมีการปรึกษาหารือเกี่ยวกับรหัส 5.0 AOSP ปรากฏว่า Google ได้ละเมิดวิธีการเข้ารับบริการ Zygote นี้แล้ว เมื่อพิจารณาจากความพยายามครั้งก่อนๆ ของเขาที่จะยึดครอง Zygote ล้มเหลว นี่เป็นก้าวไปข้างหน้าที่น่าหวัง
Chainfire กระตือรือร้นที่จะชี้ให้เห็นว่า SuperSU สามารถแก้ไขนโยบาย SELinux บนระบบที่ทำงานมานานแล้ว (และคำเตือนเพื่อความสะดวกด้วย ซึ่ง OEM สามารถปิดใช้งานสิ่งนี้ได้ และป้องกันการเข้าถึงรูทที่มีความหมายและเรียบง่ายอย่างแท้จริง) และจะต้องทำการแก้ไขใด ๆ กับ Zygote อย่างไร ด้วยความระมัดระวัง เนื่องจากบริการนี้ดำเนินการจากบริบทที่แตกต่างกัน สำหรับงานที่แตกต่างกัน และทำให้เกิดความเป็นไปได้ที่ (น่ารังเกียจ) หลายประการ ความล้มเหลวที่ละเอียดอ่อน SuperSU เบต้า 2.27 ใหม่นี้เป็นรุ่นสำหรับผู้ที่ชื่นชอบและนักเทคโนโลยีอื่นๆ ให้เล่นด้วย เพื่อดูว่ามีอะไรผิดปกติบ้าง ไม่มีปัญหาใดๆ ที่ไม่คาดคิด และนี่คือหนทางข้างหน้าที่เป็นไปได้
รับทราบ - แม้ว่าเบต้านี้จะได้ผลและ Zygote เป็นช่องทางที่ต้องการในการเข้าถึงรูท นับจากนี้ไป กระบวนการทั้งหมดเป็นเพียงการเปลี่ยนแปลงบรรทัดเดียว ห่างจากการถูกทำลายโดย Google ซึ่งจะทำให้เคอร์เนล ramdisk ที่ได้รับการแก้ไขในอนาคตสำหรับการเข้าถึงรูทบน Android (ดังนั้นจึงตัดสิทธิ์รูทสำหรับการล็อคบูตโหลดเดอร์ อุปกรณ์) อันที่จริง โปรดทราบว่ากระบวนการใหม่อาจไม่ทำงานบนบิลด์ AOSP ที่ทันสมัยอย่างสมบูรณ์ เนื่องจากมี SELinux ที่ค่อนข้างใหญ่ การเปลี่ยนแปลงภายในไม่กี่เดือนที่ผ่านมาซึ่งไม่รวมอยู่ในอุปกรณ์ขายปลีก แต่จะเกิดขึ้นในอนาคตอย่างไม่ต้องสงสัย เผยแพร่ ไม่ช้าก็เร็ว ดูเหมือนว่าเคอร์เนล ramdisk ที่ได้รับการแก้ไขจะมีความจำเป็นสำหรับการรูท แต่เบต้าใหม่นี้อาจเสนอการพักการดำเนินการระยะสั้นก่อนที่เราจะไปในทิศทางนั้น
เช็คเอาท์ บันทึกประจำรุ่น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความเสี่ยงที่เกี่ยวข้องกับการทดสอบนี้ และสำหรับลิงก์ นักพัฒนาควรทราบด้วยว่าปัจจุบัน Chainfire กำลังทำงานอย่างหนักในเรื่องนี้ คู่มือ "วิธีการ SU" (อัปเดตเต็มรูปแบบสำหรับ Android 5.0) ซึ่งน่าจะใช้งานได้ภายในไม่กี่วันข้างหน้า
[ขอขอบคุณ Chainfire มากสำหรับงานของเขาที่นี่ และความช่วยเหลือในการจัดทำบทความนี้]