0

現在、ルートとしてコマンドを実行するために、以下のようなことを行っています。しかし、全体が少し手動のように見えたので、少しグーグルで検索してroottoolsを見つけました。それは推奨される方法ですか、それとももっと良い方法がありますか?

コマンドが終了するのを待ち、出力を読み取り、値を取得できるようにしたいと考えています。

    public static void deleteSystemApp(Context context, String app)
    {
            final String MOUNT_RW = "mount -o remount,rw -t rfs /dev/stl5 /system; \n";
            final String MOUNT_RO = "mount -o remount,ro -t rfs /dev/stl5 /system; \n";
            final String RM_APP = "rm -rf " + app + "; \n";
            Process process;
            try
            {
                    process = Runtime.getRuntime().exec("su");
                    DataOutputStream os = new DataOutputStream(process.getOutputStream());
                    os.writeBytes(MOUNT_RW);
                    Toast.makeText(context, RM_APP, Toast.LENGTH_SHORT).show();
                    //os.writeBytes(RM_APP);
                    os.writeBytes(MOUNT_RO);
            }
            catch(IOException e)
            {
                    e.printStackTrace();
            }
    }

Chris Stratton が指摘した問題に関する更新: アプリの引数を urlencoding して、"something; rm -rf /" または "something && rm -rf /" のようなものを渡してデバイスをワイプできないようにしました。しかし、さらに検討した結果、私は議論をサニタイズするという考えを完全に捨てました。そして、私のコードのその部分を削除しました。なんで?

  1. 自分のデバイスでこれを行う必要があるのはなぜですか?
  2. 他の誰かが悪意のある引数を渡すことができる場合、デバイスは既に侵害されています。
4

1 に答える 1

2

元の説明:

RootTools は、ルート化された開発者に、ルート化されたアプリケーションの開発で使用するための標準化されたツール セットを提供します。最終的には、開発時間を大幅に短縮し、コードの再利用を促進する堅牢で使いやすいライブラリを開発者に提供することで、これを達成します。このプロジェクトは、何か貢献できると感じている実績のある開発者なら誰でも参加できます。協力することで、プロセスを合理化し、アプリの有効性を改善し、新しいテクニックを学び、ユーザーにより良いエクスペリエンスを提供することができます。

ご存じのとおり、 RootToolsは、ルート化されたアプリケーションの開発に使用するための標準化されたツール セットを、ルート化された開発者に提供します。非標準のツールが必要な場合は、自分で作成するか、RootTools のソース コードを変更してください。通常、このライブラリはすべてのニーズをカバーします。いくつかのプロジェクトで使用しましたが、とても満足しています。

幸運を。

于 2013-09-22T09:54:56.663 に答える