2012-10-15 4 views
1

Possible en double:
Determine if running on a rooted deviceMon application Android s'exécute-t-elle sur un appareil rooté?

Je crée une application Android et je veux savoir si ma demande est en cours d'exécution sur un périphérique enraciné.
J'ai fait des recherches sur Google, mais je n'ai pas réussi à trouver une seule solution solide.

Des questions similaires ont déjà été posées sur stackoverflow, mais sans aucune solution. Les solutions fournies dans ces liens ne fonctionnent pas sur mon appareil. Même Runtime.exec ("su") ne fonctionne pas.

Determining if an Android device is rooted programatically?

Determine if running on a rooted device

Testing if a phone is rooted

est-il un moyen de savoir le dispositif est ancré? Si nous ne pouvons pas le faire, comment Google peut-il trouver si l'appareil est rooté?

Lorsque je fais Runtime.exec ("su"), je reçois l'exception 10-15 18: 36: 36.445: W/System.err (668): java.io.IOException: Erreur exécutant exec(). Commandes: [su] Répertoire de travail: Environnement: 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; 
} 

J'ai vérifié de la coquille de la BAD, et il me donne une invite « # », donc je peux être sûr que le dispositif est au moins Shell enraciné. Étant donné qu'il est enraciné, les solutions fournies sur le Determine if running on a rooted device devraient au moins fonctionner, mais cela ne fonctionne pas non plus.

+0

Pourriez-vous fournir une sortie de journal sur la façon dont 'Runtime.exec (" su ")' ne fonctionne pas? Des exceptions? – dumbfingers

+0

Il existe des applications sur Google Play qui peuvent vous aider à déterminer si votre téléphone est enraciné ou non. Jetons un coup d'oeil ici: https://play.google.com/store/search?q=root+checker&c=apps –

+0

@ ss1271: J'ai mis à jour le poste. J'obtiens une exception 10-15 18: 36: 36.445: W/System.err (668): java.io.IOException: Erreur exécutant exec(). Commandes: [su] Répertoire de travail: null Environnement: null – user1746693

Répondre

1

Il n'y a pas de manière définitive. Vous pouvez vérifier les propriétés du système ('ro.secure', etc.), rechercher un binaire SUID su, essayer de l'exécuter, rechercher un certain nombre d'applications 'superutilisateur', etc. Cependant, il peut y avoir un binaire foobar qui est réellement su, ou tout autre programme qui vous donne les privilèges root. Il pourrait y avoir un binaire «régulier» qui exploite une certaine vulnérabilité d'Android pour obtenir la racine, etc. Si vous vérifiez chaque fichier pour SUID, vous pourriez vous rapprocher. Google utilise probablement une combinaison de certains/tous ceux-là.

Questions connexes