1

重複の可能性:
ルート化されたデバイスで実行されているかどうかを確認する

Android アプリケーションを作成していますが、アプリケーションが root 化されたデバイスで実行されているかどうかを知りたいです。
Google で調べてみましたが、確かな解決策は 1 つも思いつきませんでした。

同様の質問がstackoverflowで以前に尋ねられましたが、解決策はありません。これらのリンクで提供されている解決策は、私のデバイスでは機能しません。Runtime.exec("su") でも動作しません。

Android デバイスがプログラムによってルート化されているかどうかを判断していますか?

ルート化されたデバイスで実行されているかどうかを確認する

電話がルート化されているかどうかのテスト

デバイスがルート化されていることを確認する方法はありますか? それができない場合、Google はデバイスがルート化されているかどうかをどのように確認できますか?

Runtime.exec("su") を実行すると、例外 10-15 18:36:36.445: W/System.err(668): java.io.IOException: Error running exec() が発生します。コマンド: [su] 作業ディレクトリ: null 環境: null

public static boolean isDeviceRooted_BySu() {
    try {
        Log.d("BySu", "BySu");
        Process p = Runtime.getRuntime().exec("su");
        return true;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

ADB シェルから確認したところ、「#」プロンプトが表示されたので、デバイスが少なくともシェル ルートになっていることを確認できます。シェルがルート化されていることを考えると、ルート化されたデバイスで実行されているかどうかを判断するで提供されるソリューションは少なくとも機能するはずですが、それも機能しません。

4

1 に答える 1

1

決定的な方法はありません。システム プロパティ (「ro.secure」など) を確認し、SUID su バイナリを検索して実行し、多くの「スーパーユーザー」アプリを検索することができます。ただし、foobar実際に su であるバイナリが存在する可能性があります。 、またはルート権限を付与するその他のプログラム。Android の脆弱性を悪用して root などを取得する「通常の」バイナリが存在する可能性があります。すべてのファイルで SUID をチェックすると、それに近づく可能性があります。Google は、おそらくこれらの一部またはすべてを組み合わせて使用​​しています。

于 2012-10-15T11:53:31.830 に答える