4

http://developer.android.com/guide/publishing/licensing.htmlの「コピー防止の置き換え」セクションの下に、次のように記載されています

Android マーケットの従来のコピー防止メカニズムの制限は、それを使用するアプリケーションは、安全な内部ストレージ環境を提供する互換性のあるデバイスにのみインストールできることです。たとえば、コピーで保護されたアプリケーションを Market から root アクセスを提供するデバイスにダウンロードすることはできません。また、アプリケーションをデバイスの SD カードにインストールすることもできません。

Android の - 一方非推奨 - コピー防止は、デバイスがルート化されているかどうかをどのように確認できますか? また、Dianne Hackborn によると、それは可能ではありません (デバイスがアプリにルート化されているかどうかを検出するにはどうすればよいですか? を参照してください)。つまり、チェックは(一般には知られていない)難読化された基準チェックによって行われることを意味するだけであり、明らかに「su」コマンドが存在するかどうかの単純なチェックだけではありません。そのチェックロジックについてもっと知っている人はいますか?またはそれがどれほど安全ですか?

4

3 に答える 3

2

これは私が使用するものです:

public static boolean isDeviceRooted () {
    boolean ret = false;
    String path = null;
    Map<String,String> env = System.getenv();

    if (env != null && (path = env.get("PATH")) != null) {
        setDevicePath(path);
        String [] dirs = path.split(":");
        for (String dir : dirs){
            String suPath = dir + "/" + "su";
            File suFile = new File(suPath);
            if (suFile != null && suFile.exists()) {
                setSuLocation(suPath);
                ret = true;
            }
        }
    }
    return ret;
}

理論的には、ユーザーは 'su' を PATH にない非標準の場所に置くことができるため、すべての場合に機能するとは限りませんが、実際にはそれを行うと、'su' の場所を知る必要がある他のアプリケーションそれも見つからないので、ルート化の目的が無効になります。

于 2012-01-16T20:42:35.273 に答える
0

スーパーユーザーアプリの存在は、電話がルート化されているかどうかを判断する完璧な方法ではありませんが、ルート化されている可能性があることを示すかなりの指標です. com.noshufou.android.suパッケージがインストールされているかどうかを確認するだけではどうですか?

試したことはありませんが、なぜうまくいかないのかわかりません。

于 2011-10-11T13:59:29.997 に答える