web-dev-qa-db-ja.com

suはAndroidでどのように機能しますか?そして、それが機能するための前提条件は何ですか? Androidを応援するものは何ですか?

重複の可能性: suの意味:process = Runtime.getRuntime()。exec( "su");

私はさまざまなことをすべて試すのに疲れていますが、いつうまくいくかを理解するのにまだ失敗しています。 Androidでデバイスをroot化することは何ですか?誰かがこれを手伝ってください。

私は次の質問に答えました。私がそこに投稿したソリューションをテストし、それも機能しました。

Androidで画像ファイルの完全な権限を追加します。

これが私の質問です:

フォローしてみました。

Suをコピーしました。

SuperUser.apkをインストールしました。

プログラムからsuを呼び出し、新しく作成したプロセスを使用して、必要な操作を実行しました。

これには2つの結果があります。

1)デバイスがルート化されている場合(z4rootで永続ルートオプションを実行する場合など)、デバイスは機能し、システムファイルのアクセス許可を変更します。

2)デバイスがルート化されていない場合、動作しません。

タスクを可能にするz4rootが実行する追加のことを親切に説明してください。簡単に説明してください。

私の質問が明確でない場合は私に知らせてください。トンありがとう。

9
mk..

Z4root(または他のroot化プログラム)は、自身のuid(user-id)を0(root)に変更するために何らかのエクスプロイトを実行します。ある種のハッキングを実行し、カーネルをだまして実際にルートになる権利があると思わせることと考えることができます(z4rootがウイルスの場合、キーロガーのインストールからブリックまで、携帯電話ですべてを実行できます)。もちろん、rootアクセスを許可するような方法でカーネルをだますことが可能である場合、それはセキュリティの脆弱性と見なされ(どのアプリもそれを実行し、悪意のある処理を実行する可能性があります)、通常は将来のカーネル更新で修正されます(そのためz4rootは修正されない可能性があります)ファームウェアをアップグレードすると機能します)。

Z4rootがuidを0に設定すると、次のようになります。/systemパーティションを書き込み可能として再マウントし(デフォルトでは読み取り専用)、suバイナリ、Superuser.apk、busyboxをコピーしてから、/systemを再マウントします。読み取り専用として。

では、通常、アプリケーションが親プロセスと同じuidを持っている場合、suバイナリは「ハック」を行わずにrootアクセスをどのように提供するのでしょうか。これは、suバイナリに set-uid フラグが設定されており、常にuid 0(root)として実行されるためです。

ここで、suバイナリを/system/binにコピーした場合は、rootアクセス権が必要です。つまり、所有者/権限(chown root:root /system/bin/su; chmod 6755 /system/bin/su)を変更するのを忘れただけですが、それを行うにはルートアクセス権が必要です。

23
matix2267

デバイスをroot化すると、ROMのOSイメージを上書きまたは変更して、昇格されたアクセス許可を付与します。ユーザーモードでアプリケーションをインストールしても、Linuxのどのバージョンでも権限昇格ができない可能性があります。どのユーザーも「suをコピーする」ことで自分自身をroot化することができ、セキュリティなどはありません。

0
Jeremy