2016-07-26 4 views
0

私はカスタムROMを構築し、そのビルドのプラットフォームキーを取得しました。今私は、プラットフォームキーで署名されたシステムアプリケーションを作成しています。プラットフォーム署名付きのアプリケーションに署名した後、どのようなアクセス権を得ることができますか?

ここでは、アプリケーションをsystem/priv-appフォルダに書き込むようにしたいと考えています。根っこの電話機でスーパーユーザーアクセスでアプリケーションを実行すると、コードが機能します。

しかし、プラットフォームの鍵で署名されたアプリケーションでは、このようなアクセスが可能ですか?

私は次のことを試してみました:

public class MainActivity extends AppCompatActivity { 

private static final String DEBUG_TAG = "MainActivity"; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    try { 
     Log.i(DEBUG_TAG, "Here"); 

     Process process = Runtime.getRuntime().exec("chmod 777 /system/priv-app"); 



     DataOutputStream dataOutputStream = new DataOutputStream(process.getOutputStream()); 


     dataOutputStream.writeBytes("touch /system/priv-app/foo.txt\n"); 
     dataOutputStream.flush(); 

     BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); 
     StringBuilder stringBuilder = new StringBuilder(); 
     String line; 
     while ((line = reader.readLine())!= null) { 
      stringBuilder.append(line + "\n"); 
     } 
     Log.i(DEBUG_TAG, stringBuilder.toString()); 

    } catch (Exception e) { 
     e.printStackTrace(); 
     Log.i(DEBUG_TAG, "IO Error"); 
    } 

} 

} 

私がいなくても、エラーはなく、ファイルをディレクトリに作成されていない、私のアプリケーションでランタイムから任意の出力を得ることはありません。

実装エラーがありますか、そのようなアクセスはできませんか?

答えて

0

デフォルトでは、システムフォルダは読み取り専用でマウントされています。 rootアクセスで再インストールすることはできますが、必要以上に長く実行することはお勧めしません(priv-appフォルダにアプリケーションをインストールするよりも時間がかかります)。 1つは、マウントされたrwで工場出荷時の設定に戻す場合です(リカバリパーティションがない場合)。

+0

私の質問は実際には、私はプラットフォームキーで署名されたアプリケーションからルートアクセスを取得しますか?以前にsuコマンドを使用しなくてもrwを再マウントできますか? – bpncool

1

システムアプリケーションにはシステムレベルのアクセス権があります。システムパーティションを再マウントするには、root権限が必要です。したがって、 "外部"ヘルプなしでpriv-appディレクトリに書き込むことはできません。

独自のカスタムROMを構築している場合、起動時に実行可能デーモンを実行する方法の詳細については、を参照して、Androidスタックの下位レベルで実行されるデーモンを作成できます。ローカルソケットを介してデーモンと通信し、それを使ってシステムパーティションを再マウントし、必要なファイルをコピーすることができます。

ソケットを開き、着信接続を待機するネイティブサーバーを作成する方法を説明する次のチュートリアルを参照できます。 Unix Sockets

関連する問題