4 votes

Comment diviser les applications qui partagent un UID ?

Pendant un certain temps, j'ai eu un point d'exclamation au lieu de l'état du signal dans la barre supérieure, et certaines applications ne se rendaient pas compte qu'elles étaient connectées à l'Internet alors que d'autres fonctionnaient parfaitement. Merci à AFWall+ logs, j'ai trouvé le problème. Je dois autoriser l'accès à une application appelée com.Android.engineeringmode .

Mais cette application est liée (dans le OnePlus 3) à d'autres, comme vous pouvez le voir dans cette capture d'écran : screenshot taken in AFWall+

Je suis d'accord pour autoriser l'accès à EngineerMode mais certainement pas à tout ce tas d'applications (notamment les services d'appareil photo ou d'empreintes digitales).

Après avoir cherché sur le web, j'ai trouvé que toutes ces applications sont liées dans /données/système/packages.xml en utilisant le sharedUid 1000 . Mais il est dit de ne jamais changer l'UID d'une application lorsqu'elle est partagée (je n'ai pas vraiment compris pourquoi).

J'utilise la ROM stock ( OxygenOS 3.2.8 ) de l'OP3, mais enraciné (obtenu Xposed un Xprivacy aussi), donc c'est Android 6.0.1 .

Y a-t-il une chance que je puisse autoriser l'accès au réseau pour EngineerMode seulement ?

2voto

Andy Brudtkuhl Points 1714

Je ne pense pas qu'il soit possible de changer cela sans recompiler la ROM. Vous ne pouvez pas changer l'UID des applications après qu'elles aient été installées parce qu'elles ne pourront plus accéder à leurs fichiers, et parce que cela perturbera le système de permissions des applications.

Il y a peut-être un autre moyen de contourner le problème avec Xposed, mais je n'en sais rien. Il pourrait être possible pour un module Xposed de détecter l'appel exact que le paquet fait (pour le distinguer des appels faits par d'autres paquets dans le même processus), et de le marquer pour qu'AFWall l'autorise. De cette façon, vous n'auriez pas besoin de diviser les applications du tout.

Une alternative pourrait être de trouver vers lequel il essaie d'envoyer du trafic, et mettez cette adresse sur une liste blanche pour ce processus. Encore une fois, cela résoudrait le symptôme spécifique sans diviser les applications. Si c'est la détection du portail captif, c'est probablement http://client.android.com/generate_204 .

2voto

Guillermo Gomez Points 423

La solution qui Dan Hulme a fourni est juste et je voudrais le rendre plus clair : Vous devez recompiler la ROM mais attendez ! Ouvrez la source de EngineerMode et chercher quelque chose dans AndroidManifest.xml comme sharedUserId="android.uid.system" y le changer à quelque chose d'autre.

C'est le fondement d'une identification d'utilisateur partagée. Vous devez modifier l'application pour qu'elle n'ait plus besoin d'un UID partagé.

1voto

Stopi Points 219

Bien que le commentaire d'iBug semble une meilleure réponse à la question, mon besoin réel était d'avoir une détection correcte de l'accès Internet sur le système.

Afin de résoudre mon problème, j'ai dû ouvrir une shell adb , tapez dans

settings put global captive_portal_detection_enabled 0

Puis redémarrez. Le point d'exclamation a disparu et les applications problématiques se comportent mieux maintenant.

Pour mémoire, cela empêche une vérification sur les serveurs de Google. Cette vérification était impossible avec les règles de mon pare-feu.

Merci à Dan Hulme et iBug pour leur aide.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X