40 votes

Qu'est-ce que com.google.android.gms.persistent et pourquoi utilise-t-il toujours le processeur?

Même lorsque rien d'autre ne se passe, ce processus système semble utiliser de manière constante 1 à 2% du CPU. Au cours d'une journée, cela draine une quantité significative de batterie même lorsque l'appareil n'a été utilisé pour rien. Je n'ai pas pu le corréler à d'autres applications car même lorsqu'elles n'ont utilisé que quelques secondes de CPU chacune au cours de plusieurs heures, ce processus utilise des minutes.

Il semble toujours fonctionner même si je :

  • éteins le WiFi
  • éteins le BlueTooth
  • éteins les services de localisation
  • éteins tout sauf le strict minimum de synchronisation (par exemple GMail)

J'ai écrit une petite application de test qui surveille /proc//stat toutes les 10ms et écrit dans logcat à chaque fois que com.google.android.gms.persistent, espérant qu'elle écrirait quelque chose dans logcat elle-même ce qui permettrait de localiser quelle application ou quel autre service utilise "persistent" pour ses services. Je ne vois pas grand-chose, mais voici quelques choses que j'ai vues :

InputReader: Reconfiguration des périphériques d'entrée. changements=0x00000010
WifiService: acquireWifiLockLocked: WifiLock{NlpWifiLock type=2 binder=android.os.BinderProxy@f73f0b8}
LocationFilter: Forcing la localisation stable. Localisation d'origine: Location[...
ConnectivityService: notifyType CAP_CHANGED pour NetworkAgentInfo [WIFI () - 246]

Chaque ligne ci-dessus était à un moment différent, juste avant (dans les 10ms) un message de log détectant l'utilisation du CPU par com.google.android.gms.persistent mais sans aucune indication claire si c'est lié ou non. Malheureusement, aucune des choses ci-dessus n'indique plus de 10ms de temps de CPU utilisé, et donc - même si précis pour indiquer ce qui utilise "persistent", cela représente seulement une petite partie du temps réel du CPU utilisé.

D'autres tentatives de rechercher ce qui utilise ce processus ont suggéré diverses choses (comme les portables) auxquelles je n'ai pas et que je n'ai jamais connectées à mon appareil.

Qu'est-ce qui utilise ce processus ? Je recherche soit directement cette information, soit d'autres moyens pour déduire cette information de manière similaire à mes tentatives via logcat.

Mise à jour : J'ai désactivé toute synchronisation sous Paramètres -> Comptes. Cela semble réduire un peu plus l'utilisation du CPU, et la baisse de batterie semble avoir fortement diminué - sauf que périodiquement, com.google.android.gms.persistent semble toujours prendre un éclat de CPU.

Ma théorie de travail maintenant est qu'il a une Alarme qui se déclenche à des intervalles d'environ 60 secondes indépendamment de si c'est nécessaire ou non, et que le code vérifie un travail de synchronisation, et si rien n'a besoin d'être synchronisé, il abandonne immédiatement la tranche de temps et laisse le CPU se mettre en veille. Cependant, je peine à croire qu'un tel design horrible serait utilisé, car tout ce qui réveille le CPU toutes les minutes va sûrement drainer la batterie beaucoup plus rapidement même s'il revient en veille, et pourquoi la synchronisation serait-elle basée sur un sondage plutôt que sur quelque chose de piloté par interruption ?

D'après ce que je peux dire (en raison de ne pas avoir pu le trouver), le code source de com.google.android.gms.persistent n'est pas open source ou disponible en ligne nulle part. Si je me trompe, j'accepterais en réponse à ma question, toute réponse pointant vers le code source afin que je puisse le parcourir et déterminer moi-même pourquoi l'utilisation du CPU.

0 votes

Ceci fait partie de Google Play Services. Je suppose que c'est la couche de persistance pour Google Play Services. Avez-vous essayé de désactiver l'application Google Play Jeux depuis Paramètres->Applications?

0 votes

Je ne suis pas sûr de ce que persistent est spécifiquement utilisé pour, mais gms est le service Play qui gère tout un tas de choses comme la localisation, les notifications Push, les analyses, etc. Toute application utilisant les services Google Play y serait connectée.

0 votes

@MichaelKrause Je n'utilise pas Google Play Games de toute façon, alors j'ai essayé de le désactiver, je verrai dans une heure ou deux quel effet cela a.

0voto

Mohit Dixit Points 77

Il ne s'agit pas d'un virus ou d'un cheval de Troie. il s'agit du processus de service de Google Play qui doit fonctionner correctement pour les Services Google Play sur la plate-forme Android. En fait, il s'agit du processus principal s'exécutant en arrière-plan, il est utile pour prendre en charge les applications et est lié à Google Play Store et les maintenir à jour et fournir d'autres fonctionnalités de service Google Play. En ce qui concerne l'utilisation du processeur, de nombreuses autres applications s'exécutent également en arrière-plan et prennent des ressources, mais c'est pour les maintenir à jour et vous fournir de meilleurs services en temps réel.

0 votes

Et s'il prend 100% du temps CPU sur un seul cœur ?

0 votes

Non, le système Android lui-même est optimisé de telle manière que les applications liées à Google n'affectent pas beaucoup le système, ces problèmes se sont produits dans des appareils à mémoire faible disponibles il y a longtemps. Maintenant, les appareils actuels disposent de suffisamment d'espace de stockage pour eux.

2 votes

Hier, pour une raison quelconque, un noyau du Galaxy S4 i9506, sous Android 6.0.1, a consommé 100% du temps CPU. Je voulais juste comprendre pourquoi.

-5voto

True258 Points 7

Selon David Bisson:

Le dernier membre d'une famille notoire de trojans Android télécharge et lance des applications malveillantes sans le savoir de l'utilisateur sur les appareils infectés, selon les chercheurs de la société russe d'antivirus Dr Web.

Le malware, connu sous le nom d'" Android.Xiny.60 ", provient de la même famille que Android.Xiny.19.origin, qui a fait sa grande entrée en janvier 2016.

À l'époque, Xiny se cachait dans plus de 60 jeux disponibles en téléchargement sur le magasin officiel Google Play, et utilisait des instructions relayées sous forme de fichiers image modifiés via la stéganographie pour exécuter des fichiers APK arbitraires.

Jeux Android infectés

Comme le rapporte Softpedia, les dernières versions du trojan Xiny n'ont pas besoin de tromper les utilisateurs en leur accordant des privilèges d'administration, mais plutôt déploient des exploits pour rooter l'appareil.

Une fois que le malware est lancé, il charge ses composants malveillants et les enregistre dans les répertoires système. Le trojan peut utiliser ces éléments pour causer toutes sortes de problèmes.

Par exemple, Xiny peut injecter des processus malveillants dans des applications de chat IM, espionner des conversations et même envoyer des messages sans le consentement de l'utilisateur. De plus, le malware cible les applications bancaires et peut afficher de fausses pages de connexion pour voler des noms d'utilisateur et des mots de passe.

Comme l'explique Dr Web dans un article de blog:

"Le trojan lance le module igpi (Android.Xiny.61) qui utilise la fonction ptrace pour injecter la bibliothèque Linux exécutable igpld.so (Android.Xiny.62) dans les processus système de Google Play (com.android.vending) et Google Play Services (com.google.android.gms, co.google.android.gms.persistent) applications."

Le malware peut également injecter Android.Xiny.62 dans le zygote, un processus Android crucial dont l'infection permet au trojan de lancer de nouvelles applications et des logiciels malveillants supplémentaires. Pendant ce temps, Android.Xiny.60 attend qu'un chargeur soit détecté, que l'écran d'accueil s'allume ou s'éteigne, ou que plusieurs autres événements spécifiques se produisent. Chaque fois que l'un de ces événements a lieu, le trojan se connecte à nouveau à son serveur de commande et de contrôle et envoie toutes sortes d'informations sur l'appareil à la base.

Les utilisateurs Android doivent travailler pour se protéger contre toutes les versions du malware Android.Xiny en maintenant une solution antivirus à jour, en lisant les avis des applications avant de les installer et en vérifiant que les autorisations demandées par une application correspondent à son objectif annoncé.

Peu, voire aucune application légitime ne nécessite réellement des privilèges root, donc méfiez-vous des imposteurs cherchant des droits qu'ils ne méritent pas

3 votes

Il semble que les com.google.android.gms.* soient attaqués par un code injecté, et non pas que n'importe quelle instance de ceux-ci soit en fait un virus.

0 votes

J'ai essayé un outil de numérisation pour Android.Xiny et rien n'a été trouvé. Je doute que ce soit le problème.

0 votes

Les virii ne sont pas un processus, ce sont des codes injectés qui s'exécutent dans un processus légitime. C'est ce que fait un virus biologique. Il ne vit pas réellement lui-même (il ne complète pas son cycle de vie en se reproduisant tout seul ou avec un autre de son espèce), il infecte une cellule vivante et injecte de l'ADN / ARN dedans, et la cellule inconsciente complète le cycle de vie. Si un code malveillant s'exécute en tant que processus, c'est un cheval de Troie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X