3

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

ルート権限を要求せずに、電話がルート化されているかどうかを知りたいです。どうやってやるの?

  1. かどうかをテストしFile.Exists("/system/bin/su")ますか?よくわかりません。許可のためにできないと思います
  2. スーパーユーザーアプリがインストールされているかどうかをテストしていますか? PackageManager うーん、使用するには特別な許可が必要だと思います.Superuserはonlu su managerではありません(たとえば、SuperSUを知っています)
  3. 非ルートアプリでは望ましくない su プロンプトがトリガーされるため、実行しようとすることsuはオプションではありません

何か案が?私の目的は、明らかにユーザーの同意を得て、ルート化されているデバイスの数に関する匿名の統計を取得することです:)

4

2 に答える 2

0

オプション 1. 可能です。特別な許可は必要ありません。

オプション 2. ルート化された電話には、スーパーユーザー マネージャー アプリケーションが付属していない場合があります。

オプション 3. あなたが言ったように、それは検出する良い方法ではありません。

さらに、ro.build.tagに文字列が含まれているかどうかを (getprop | grep ro.buil.tagまたはを使用して) チェックする別のオプションがあります。android.os.Build.TAGtestkeys

編集: オプション 1 については、setuid/setgid パーミッションで検索することをお勧めします (つまりfind / -perm -2000 -o -perm -4000、su がリストにあるかどうかを確認します)。

于 2012-09-17T02:09:17.570 に答える
-3

電話が「ルート化」されることの意味が常に同じであるとは限らないため、これを確実に行うことはできません。あなたが得るすべての提案は、人気のあるルート関連ツールのいくつかをテストすることです。ただし、これらのツールを使用しない方法で電話がルート化されているかどうかを検出することはできません。

于 2012-09-17T04:40:25.567 に答える