-1
votes

Détecter si l'appareil est enraciné sans système

Comme une racine sans système est disponible pendant quelques années, il est devenu "plus difficile" de détecter si un périphérique est enraciné ou non. J'ai commencé à chercher une solution possible pour détecter si un périphérique est enraciné sans système ou non et je ne peux toujours pas comprendre la solution. Vérification si le fichier existe dans des chemins donnés (IN / Système) n'a aucun point tel qu'il ne peut pas strong> si un périphérique est enraciné sans système. Vous recherchez également des applications qui gèrent l'accès des racines n'ont aucun sens, car l'utilisateur peut ne pas les avoir installé / ou simplement en utilisant d'autres, non aussi populaires que magisk, supersu, etc.

donc, ce que je pensais, exécute la commande "su" et ensuite vérifier si la coque fonctionne en mode root ("#") ou non ("$"). Mais comment puis-je vérifier quel mode il fonctionne? Autant que je sache, après simplement exécution de la commande: p>

device:/ #


0 commentaires

3 Réponses :


0
votes

Il n'y a pas de moyen réel de dire avec certitude qu'un périphérique n'est pas enraciné. Même votre test de voir si su existe - ils pourraient toujours renommer l'application à "Super" au lieu de SU. Ou "foobar". Ou utilisez une version personnalisée de l'AOSP qui se cache tout ce que vous recherchez. Ce que vous essayez de faire est de courir dans un environnement non approuvé que vous ne contrôlez pas et que vous le demandez si cela peut être approuvé. Cela ne fonctionnera jamais. Vous pouvez prouver qu'un environnement est indigne de confiance, vous ne pouvez jamais prouver son digne de confiance.


0 commentaires

0
votes

Il est préférable d'utiliser l'API Safetynet. Bien que cela ne puisse pas dire en racine spécifiquement, cela vous fera savoir que l'appareil est indigne de confiance. Le code est également assez simple.

val nonce = ByteArray(20)
SecureRandom().nextBytes(nonce)
SafetyNet.getClient(context).attest(nonce, API_KEY)
        .addOnSuccessListener(this) { response ->
            // Indicates communication with the service was successful.
            // Use response.jwsResult to get the result data.
            val resultParts = result.jwsResult.split(".")
            if (resultParts.size == 3) {
                val bytes = Base64Utils.decode(resultParts[1])
                val newString = String(bytes)
                val json = JSONObject(newString)
                    // Check json fields to see if device is secure
                    // NOTE best practice is to send this to server instead of handling locally.
                }
        }
        .addOnFailureListener(this) { e: Exception ->
            // An error occurred while communicating with the service.
            if (e is ApiException) {
                // An error with the Google Play services API contains some
                // additional details.
                // You can retrieve the status code using the
                // e.statusCode property.
            } else {
                // A different, unknown type of error occurred.
                Log.d(TAG, "Error: ${e.message}")
            }

        }


0 commentaires

0
votes

Ajout de la réponse de Gabe Sechan, la détection de racines sans système est toujours presque impossible, du fait que les privilèges racines pourraient modifier le logiciel exécutant le chèque.

qui étant dit, il y a le Demande de traction proposée sur Rootbeer, qui devrait Soyez capable de détecter la magisque à l'aide de sockets de domaine UNIX, au moins jusqu'à ce que la méthode soit corrigée.


0 commentaires