SuperSU BETA: Zrootuj Androida Lollipop na standardowym jądrze

Łamanie: Chainfire ogłosił dzisiaj SuperSU Beta 2.27, eliminując potrzebę modyfikacji RAMdysku jądra, aby móc korzystać z dostępu roota w systemie Android 5.0

Do tej pory, jeśli chciałeś uzyskać root na Androidzie 5.0, musiałeś wgrać zmodyfikowane jądro na swoje urządzenie, aby obejść niektóre ograniczenia SELinux. Starszy uznany programista XDA Łańcuchowy Ogień niedawno wydano wcześniej niezbędne CF-Auto-Root pakiet, który dokonał niezbędnych modyfikacji ramdysku jądra, aby usunąć ograniczenie SELinux ze skryptu install-recovery.sh na AOSP. Jednak tego ranka Chainfire wywołał uśmiech na wielu twarzach, podobnie jak on ogłoszono na Twitterze że w przyszłości nie będzie to już konieczne.

Do dzisiaj Chainfire planował wypuszczenie zautomatyzowanego narzędzia do łatania opartego na ZIP, aby automatycznie łatał obrazy jądra z poziomu odzyskiwania TWRP, dopóki nie natknął się na odpowiednią metodę, aby usunąć potrzebę Ten.

To odkrycie oznacza, że ​​użytkownicy Androida 5.0 nie muszą już uruchamiać zmodyfikowanego jądra, aby uzyskać dostęp do roota za pośrednictwem SuperSU (lub innych rozwiązań root). Chociaż nie był to duży problem na urządzeniach Nexus z odblokowanymi programami ładującymi, konieczna była modyfikacja ramdysku dotyczy wielu użytkowników urządzeń z blokadą bootloadera, dla których nie jest dostępne odblokowanie (tak, niestety tak jest). istnieć). Odpowiedź na ich modlitwy jest już dostępna i możemy przedstawić ekskluzywne wyjaśnienie potrzebnych zmian. Przynajmniej na razie (dopóki Google tego nie załata) możliwe jest uzyskanie dostępu do roota, a następnie zainstalowanie i używanie SuperSU na standardowym urządzeniu z Androidem 5.0, bez konieczności modyfikowania RAMdysku jądra. Powodem tego jest potrzeba uruchomienia usługi przez SuperSU jako root, aby umożliwić nieograniczony dostęp roota na urządzeniach chronionych SELinux.

Wcześniej SuperSU korzystało z preinstalowanego AOSP flash_recovery service (używanej w AOSP do aktualizacji odzyskiwania po instalacji OTA), aby uruchomić demona SuperSU (który faktycznie zapewnia uprawnienia roota aplikacjom, które o to proszą). Wraz z wydaniem Lollipopa usługa ta została dodana do ograniczonego kontekstu SELinux, co oznacza, że ​​nie ma już niezakłóconego dostępu do systemu. Poprzednie modyfikacje jądra miały na celu usunięcie ograniczeń SELinux z tego skryptu.

Najnowsza wersja beta SuperSU firmy Chainfire rozwiązuje ten problem, korzystając z podstawowej usługi „Zygote” (odpowiedzialnej za uruchamianie wszystkich usług Java, a tym samym wszystkich aplikacji zainstalowanych na urządzeniu). Ponieważ Zygote jest jedną z niewielu usług dostępnych na Androidzie L, którą można uruchomić jako root w systemie nieograniczony kontekst „init” SELinux, co czyni go głównym celem do wykorzystania w operacjach SuperSU. Po uruchomieniu usługa Zygote ma kontekst „init” SELinux przeniesiony do ostatecznego (ograniczonego) kontekstu „Zygota”. Chainfire udało się pomyślnie zmodyfikować pliki Zygote, aby uruchomić kod jako użytkownik root, w nieograniczonym kontekście „init”, przywracając w ten sposób SuperSU do Androida L, bez jądra modyfikacje.

To nie pierwszy raz, kiedy Chainfire zwrócił się do Zygote o rozwiązanie tych problemów; wcześniejsza wersja beta 2.23 wykorzystywała Zygote jako sposób na potencjalne obejście innych problemów z SELinux (które powodowały awarię aplikacji root na Androidzie L). Dzięki temu niektóre (ale nie wszystkie) niedziałające aplikacje mogły działać – pozostałe wymagały aktualizacji przez ich programistów. Niestety, gdy konsultowano kod AOSP 5.0, okazało się, że Google złamał już ten sposób przejmowania usługi Zygote. Biorąc pod uwagę, że wszystkie jego poprzednie próby przejęcia Zygoty zakończyły się niepowodzeniem, jest to obiecujący krok naprzód.

Chainfire chętnie zwrócił uwagę, że SuperSU od dawna jest w stanie modyfikować zasady SELinux w działającym systemie (i ostrzega co do łatwości które producent OEM mógłby to wyłączyć i naprawdę uniemożliwić znaczący i prosty dostęp do roota) oraz w jaki sposób należy wprowadzić wszelkie modyfikacje w Zygote ostrożnie, biorąc pod uwagę, że usługa jest uruchamiana z różnych kontekstów, dla różnych zadań, a to stwarza możliwość szeregu (paskudnych) subtelne awarie. Ta nowa wersja beta SuperSU 2.27 to kompilacja dla entuzjastów i innych techników, z którymi można się pobawić i dowiedzieć się, co się psuje. Trzymamy kciuki — nie ma żadnych niespodziewanych błędów, które mogłyby przeszkodzić w pokazie, i jest to realne rozwiązanie.

Uwaga – nawet jeśli ta wersja beta się powiedzie, a Zygota jest preferowaną drogą uzyskania dostępu do roota, w przyszłości cały proces będzie tylko zmianą w jednej linii nie do złamania przez Google, co sprawiłoby, że załatane ramdyski jądra stałyby się przyszłością dostępu do roota na Androidzie (wykluczając w ten sposób rootowanie w przypadku zablokowanego bootloadera urządzenia). Rzeczywiście, jeśli chodzi o heads-up, nowy proces może nawet nie działać na w pełni aktualnej wersji AOSP, ze względu na dość duże SELinux zmian w ciągu ostatnich kilku miesięcy, które nie zostały uwzględnione w urządzeniach detalicznych, ale które niewątpliwie nastąpią w przyszłości wydania. Jednak prędzej czy później wydaje się prawdopodobne, że zmodyfikowane ramdyski jądra będą potrzebne do rootowania, ale nowa wersja beta może wymagać krótkiego wstrzymania wykonania, zanim będziemy musieli pójść w tym kierunku.

Wymeldować się uwagi do wydania aby uzyskać więcej informacji na temat zagrożeń związanych z testowaniem tego, a także linki. Deweloperzy powinni również mieć świadomość, że Chainfire obecnie ciężko pracuje nad Przewodnik „Jak to zrobić SU”. (w pełni zaktualizowany do Androida 5.0), który powinien być dostępny w ciągu kilku najbliższych dni.

[Ogromne podziękowania dla Chainfire za jego pracę tutaj i pomoc w przygotowaniu tego artykułu.]