속보: Chainfire는 오늘 Android 5.0에서 루트 액세스를 활용하기 위해 커널 램디스크를 수정할 필요가 없는 SuperSU 베타 2.27을 발표했습니다.
지금까지 Android 5.0에서 루트를 얻으려면 수정된 커널을 기기에 플래시하여 일부 SELinux 제한 사항을 해결해야 했습니다. XDA 수석 인정 개발자 체인파이어 이전에 필요했던 기능이 최근 출시되었습니다. CF-자동 루트 이 패키지는 AOSP의 install-recovery.sh 스크립트에서 SELinux 제한을 제거하기 위해 필요한 커널 램디스크 수정을 수행했습니다. 하지만 오늘 아침, Chainfire는 많은 얼굴에 미소를 선사했습니다. 트위터에 발표 앞으로는 더 이상 이런 일이 필요하지 않을 것입니다.
오늘까지 Chainfire는 자동화된 ZIP 기반 패치 도구를 출시할 계획이었습니다. TWRP 복구 내에서 커널 이미지를 패치하여 패치의 필요성을 제거하는 적절한 방법을 발견할 때까지 이것.
이 사실은 Android 5.0 사용자가 더 이상 SuperSU(또는 기타 루트 솔루션)를 통해 루트 액세스 권한을 얻기 위해 수정된 커널을 실행할 필요가 없음을 의미합니다. 잠금 해제 가능한 부트로더가 있는 Nexus 기기에서는 큰 문제가 아니지만 램디스크 수정이 필요했습니다. 잠금 해제가 불가능한 부트로더 잠금 장치를 사용하는 많은 사용자에게 우려되는 점입니다(예, 불행하게도 잠금 해제가 가능합니다). 존재하다). 그들의 기도에 대한 응답이 이제 여기에 있으며, 우리는 필요한 변화에 대해 독점적인 설명을 제시할 수 있습니다. 적어도 현재로서는(Google에서 패치를 적용하지 않는 한) 루트 액세스 권한을 얻은 다음 커널 램디스크를 조정하지 않고도 순정 Android 5.0 기기에 SuperSU를 설치하고 사용할 수 있습니다. 그 이유는 SELinux로 보호되는 장치에서 무제한 루트 액세스를 허용하기 위해 SuperSU가 루트로 서비스를 실행해야 하기 때문입니다.
이전에는 SuperSU가 사전 설치된 AOSP를 활용했습니다.
플래시 복구 서비스(OTA 설치 후 복구를 업데이트하기 위해 AOSP에서 사용됨)를 사용하여 SuperSU 데몬(실제로 이를 요청하는 앱에 루트 권한을 제공함)을 시작합니다. Lollipop이 출시되면서 이 서비스는 제한된 SELinux 컨텍스트에 추가되었습니다. 즉, 더 이상 시스템에 대한 완전한 액세스가 불가능하다는 의미입니다. 이전 커널 수정에서는 이 스크립트에서 SELinux 제한 사항을 제거하려고 했습니다.Chainfire의 최신 SuperSU 베타 릴리스는 핵심 'Zygote' 서비스(모든 Java 서비스 및 장치에 설치된 모든 앱 실행을 담당함)를 사용하여 이 문제를 해결합니다. Zygote는 Android L에서 사용할 수 있는 유일한 서비스 중 하나이므로 Android L에서 루트로 시작됩니다. 제한되지 않은 "init" SELinux 컨텍스트는 다음 작업에 사용하기 위한 주요 대상이 됩니다. 슈퍼SU. 부팅 후 Zygote 서비스는 SELinux "init" 컨텍스트가 최종(제한된) "Zygote" 컨텍스트로 전환됩니다. Chainfire는 루트 사용자로 코드를 실행하기 위해 Zygote 파일을 성공적으로 수정했습니다. 무제한 "init" 컨텍스트 내에서 SuperSU를 커널 없이 Android L로 다시 가져옵니다. 수정.
Chainfire가 이러한 문제를 해결하기 위해 Zygote를 선택한 것은 이번이 처음이 아닙니다. 이전 2.23 베타에서는 다른 SELinux 문제(Android L에서 루트 앱이 중단되는 원인)를 우회하기 위한 수단으로 Zygote를 사용했습니다. 이를 통해 작동하지 않는 앱 중 일부(전부는 아님)가 작동할 수 있었으며 나머지는 개발자의 일부 업데이트가 필요했습니다. 안타깝게도 5.0 AOSP 코드를 검토했을 때 Google이 Zygote 서비스를 인수하는 이 방법을 이미 깨뜨린 것으로 나타났습니다. Zygote를 인수하려는 이전의 모든 시도가 실패했다는 점을 고려하면 이는 유망한 진전입니다.
Chainfire는 SuperSU가 오랫동안 실행 중인 시스템에서 SELinux 정책을 수정할 수 있었다는 점을 지적하고 싶었습니다. OEM이 이를 비활성화하고 의미 있고 간단한 루트 액세스를 실제로 방지할 수 있음) 및 Zygote에 대한 수정이 어떻게 이루어져야 하는지 서비스가 다양한 작업에 대해 다양한 컨텍스트에서 실행된다는 점을 고려하면 주의 깊게 살펴보겠습니다. 미묘한 실패. 이 새로운 SuperSU 베타 2.27은 매니아와 기타 기술 전문가가 함께 플레이하여 무엇이 문제인지 알아낼 수 있는 빌드입니다. 손가락이 교차했습니다. 예상치 못한 눈에 띄는 버그는 없으며 이는 앞으로 나아갈 수 있는 실행 가능한 방법입니다.
참고하세요. 이 베타 버전이 성공하고 Zygote가 루트 액세스 권한을 얻는 데 선호되는 방법이더라도 앞으로는 전체 프로세스가 단 한 줄만 변경됩니다. 패치된 커널 램디스크를 Android의 루트 액세스를 위한 미래로 만들 수 있습니다(따라서 부트로더 잠금에 대한 루트 제외). 장치). 실제로 미리 말씀드리지만 일부 상당히 큰 SELinux로 인해 새 프로세스는 완전히 최신 AOSP 빌드에서 작동하지 않을 수도 있습니다. 지난 몇 달 동안의 변경 사항으로, 소매 장치에는 포함되지 않았지만 앞으로는 의심할 바 없이 포함될 것입니다. 릴리스. 조만간 수정된 커널 램디스크가 루트에 필요할 것으로 보이지만 이 새로운 베타 버전은 우리가 그 방향으로 나아가기 전에 짧은 실행 중지 기간을 제공할 수 있습니다.
확인해 보세요 릴리스 노트 이를 테스트하는 데 관련된 위험에 대한 자세한 내용과 링크를 참조하세요. 개발자는 또한 Chainfire가 현재 "SU 사용법" 가이드 (Android 5.0으로 완전히 업데이트됨), 앞으로 며칠 내에 출시될 예정입니다.
[여기서 작업하고 이 기사를 준비하는 데 도움을 준 Chainfire에게 큰 감사를 드립니다.]