2012-12-10 1 views
10

私はAOSPに取り組んでいます。私は正常に構築するために私のAPKを追加しました。今私は自分のアプリにルートアクセスを与えたい。私は、他のアプリケーションへのrootアクセスを提供したり、スーパーユーザアプリケーションを自分のビルドにインストールしたりしたくありません。私はルートアクセスを取得するために私のアプリケーションを追加したいです。それをどうすれば実現できますか?AOSPを修正して特定のアプリにルートアクセスを許可するにはどうすればよいですか?

私はシステム/エクストラ/ SUパスにsu.cファイルを通り抜けたが、私は、全体のコードを理解することができないんです。

私は、コードを経て

は、私が modify su.cは私のアプリ、ビルドに compile it and add the binaryにrootアクセスを提供することができれば、私の目的を達成することができると思います。私は正しい?

+1

*任意の*アプリがちょうどルートになることができるのであれば、それは巨大なセキュリティバーグではないでしょうか? –

+0

これを行う方法がわからない場合は、ルートとして実行される前に安全性のためにコードを監査する方法を知っていることはほとんどありません。 –

+0

コードから私はそれが同じ方法で、私はデータ/システム/ packages.xmlのXMLファイルを解析し、私のアプリのUIDを見つけて、それがシステムへのルートアクセスを許可したいシェルへのルートアクセスを与えるthtを見つけた – Neji

答えて

6

あなたは正しい方向に動いています。 su.cのソースを確認する必要があります。唯一の問題は、プログラムをrootとして実行する方法です。これを行うには、アプリケーションの実行可能ファイルにSUIDスティッキービットを設定する必要があります。これを行うには、あなたは、このビットがセットされているかを確認することができSUプログラムのインスタンスのために、system/core/include/private/android_filesystem_config.hファイル(構造android_files[])を変更する必要があります

{ 06755, AID_ROOT,  AID_ROOT,  "system/xbin/su" }, 
+1

Androidアプリケーションには固有の実行可能ファイルがないため、この方法は機能しません。代わりに、最終的に共通の実行可能ファイルへのライブラリになります。 Zygoteはアプリケーションプロセスを作成しますが、決してexec()を実行することはなく、UIDを変更してアプリケーションコードでライブラリをロードします。 –

+0

私は分かりません。これがsuの仕組みです。私はこのアプローチを自分のプロジェクトで何度も使用することができました。 – Yury

+0

Yury、両方のファイルで更新した部分を教えてください。あなたのアプリにroot権限でアクセスできますか? – Neji

3

ChainFireはa guide on suを書いていますし、どのように通常のアプリのためにそれを使用します。あなたが自分の電話以外のものを扱うつもりなら、これはあなたが従う方法です。

+0

実行可能バイナリがありません。私はroot権限をprebuilt/preinstalled Apkに設定したい。私は何をすべきか? –

関連する問題