SuperSU ベータ: ストック カーネル上の Android Lollipop のルート

速報: Chainfire は本日、SuperSU Beta 2.27 を発表しました。これにより、Android 5.0 で root アクセスを利用するためにカーネル RAM ディスクを変更する必要がなくなります。

これまで、Android 5.0 で root を取得したい場合は、SELinux の制限を回避するために、変更したカーネルをデバイスにフラッシュする必要がありました。 XDA 上級認定開発者 チェーンファイア 以前に必要だったものが最近リリースされました CF-自動ルート このパッケージでは、AOSP の install-recovery.sh スクリプトから SELinux 制限を削除するために必要なカーネル RAM ディスクの変更が行われています。 しかし今朝、チェーンファイアは多くの人々に笑顔をもたらしました。 ツイッターで発表されました 今後はその必要がなくなるということです。

今日まで、Chainfire は、ZIP ベースの自動パッチ適用ツールをリリースすることを計画していました。 必要性を取り除く適切な方法が見つかるまで、TWRP リカバリ内からカーネル イメージにパッチを適用していました。 これ。

この事実は、Android 5.0 ユーザーが SuperSU (または他のルート ソリューション) 経由でルート アクセスを取得するために、変更されたカーネルを実行する必要がなくなったことを意味します。 ロック解除可能なブートローダーを備えた Nexus デバイスでは大きな問題はありませんが、RAM ディスクの変更が必要でした。 ブートローダーでロックされロック解除ができないデバイスを使用している多くのユーザーにとっては懸念事項です (はい、残念ながらロック解除は可能です) 存在する)。 彼らの祈りに対する答えがここにあり、必要な変化について独占的に説明することができます。 少なくとも現時点では (Google がパッチを適用するまでは)、カーネルの RAM ディスクを微調整することなく、root アクセスを取得し、標準の Android 5.0 デバイスに SuperSU をインストールして使用することが可能です。 この理由は、SELinux で保護されたデバイス上で無制限の root アクセスを許可するために、SuperSU が root としてサービスを実行する必要があるためです。

以前は、SuperSU はプリインストールされた AOSP を利用していました。 フラッシュ_リカバリー サービス (OTA インストール後にリカバリを更新するために AOSP で使用されます) を使用して、SuperSU デーモン (実際には、要求するアプリに root 権限を提供します) を起動します。 Lollipop のリリースにより、このサービスは制限された SELinux コンテキストに追加されました。つまり、システムに純粋にアクセスできなくなりました。 以前のカーネル変更では、このスクリプトから SELinux の制限を削除することを目的としていました。

Chainfire の SuperSU の最新ベータ リリースでは、コアの「Zygote」サービス (すべての Java サービス、したがってデバイスにインストールされているすべてのアプリの起動を担当します) を使用することでこの問題を解決します。 Zygote は Android L で利用できる唯一のサービスの 1 つであるため、Android L 内で root として開始されます。 無制限の「init」SELinux コンテキスト。これにより、SELinux コンテキストは、 スーパーSU。 起動後、Zygote サービスの SELinux "init" コンテキストは、最終的な (制限された) "Zygote" コンテキストに移行されます。 Chainfire は、root ユーザーとしてコードを実行するために、Zygote ファイルの変更に成功しました。 無制限の「init」コンテキスト内で、カーネルなしで SuperSU を Android L に戻します。 修正。

Chainfire がこれらの問題を解決するために Zygote に頼ったのはこれが初めてではない。 以前の 2.23 ベータ版では、他の SELinux の問題 (Android L でルート アプリが壊れる原因となっていた) を回避する手段として Zygote が使用されていました。 これにより、機能しないアプリの一部 (すべてではありません) が動作するようになりました。残りのアプリについては、開発者によるいくつかの更新が必要です。 残念なことに、5.0 AOSP コードを調査したところ、Google が Zygote サービスを引き継ぐこの方法をすでに破っていたことが判明しました。 Zygoteを乗っ取ろうとする彼のこれまでの試みがすべて失敗したことを考えると、これは有望な前進である。

Chainfire は、SuperSU は長い間、実行中のシステム上の SELinux ポリシーを変更できてきたことを熱心に指摘しました (そして、その容易さについては警告しています) OEM がこれを無効にして、意味のある単純な root アクセスを本当に阻止できる可能性がある)、および Zygote に加えられた変更をどのように行う必要があるか サービスがさまざまなタスクに対してさまざまなコンテキストから実行されているため、多数の (厄介な) 問題が発生する可能性があることを考慮して、慎重に行ってください。 微妙な失敗。 この新しい SuperSU ベータ 2.27 は、愛好家やその他の技術者が、何が壊れているかを知るために試してみるビルドです。 残念ですが、予期せぬ重大なバグはなく、これは実行可能な方法です。

注意してください - たとえこのベータ版がうまくいき、Zygote が root アクセス権を取得するための優先手段となったとしても、今後はプロセス全体が 1 行の変更だけで済むようになります。 Google による破壊は避けられます。これにより、パッチが適用されたカーネル RAM ディスクが Android の root アクセスに将来使用されるようになります (したがって、ブートローダー ロックされた root は除外されます)。 デバイス)。 実際、注意として、かなり大規模な SELinux が原因で、新しいプロセスは完全に最新の AOSP ビルドでは動作しない可能性があります。 過去数か月以内の変更。これらは小売デバイスには含まれていませんが、将来的には間違いなく含まれるでしょう リリースします。 ただし、遅かれ早かれ、root には修正されたカーネル RAM ディスクが必要になる可能性が高いと思われますが、この新しいベータ版では、その方向に進む前に短い実行時間が提供される可能性があります。

チェックアウト リリースノート このテストに伴うリスクの詳細とリンクについては、こちらをご覧ください。 開発者は、Chainfire が現在、 「ハウツー SU」ガイド (Android 5.0 用に完全に更新されました)。今後数日以内に利用可能になる予定です。

[ここでの仕事と、この記事の準備にご協力いただいた Chainfire に多大な感謝を申し上げます。]