CyanogenMod – Modifications du Privacy Guard = reboot

Par le dans . Marqué comme , , , avec Aucun commentaire

CyanogenMod – Modifications du Privacy Guard = reboot

Suite à la mise à jour de mon Nexus 5 sous CyanogenMod 13 qui m’a permis d’écrire un billet ici, j’ai forcément « joué » avec les nouvelles fonctionnalités disponibles.

A force de toucher à tout, j’ai fini par « briquer » à nouveau mon téléphone et j’ai pas mal galéré pour le refaire fonctionner convenablement.

C’est comme ça, quand on est curieux, on touche à tout, on ne peut pas s’en empêcher !

Je vais donc partager avec vous, les différentes manipulations que j’ai pu réaliser, car après avoir lu pas mal de forums et autres sites sur le Web, il se trouve que nous sommes nombreux à tomber dans le piège de « Privacy Guard »

Contexte :

Qu’est-ce que le Privacy Guard

Le « Privacy Guard Manager » disponible au sein du système d’exploitation « CyanogenMod » (et peut-être ailleurs, je n’en sais pas plus à ce sujet) est un gestionnaire des permissions pour lesquelles les applications demandent une autorisation.

Ce système permet de lister l’ensemble des applications installées et de gérer, avec plus ou moins de finesse selon vos besoins, les différentes permissions et accès à vos données personnelles dont elles ont besoin pour s’exécuter.

Il propose actuellement 2 modes :

  • Un mode « normal » : listant les applications que vous avez installées
  • Un mode avancé : mode ‘normal’ + toutes les applications natives du système

Vous la sentez arriver la bonne grosse boulette ?

Mode facile pour le privacy guard de cyanogenmod

Privacy Guard en mode normal

Mode avancé pour le privacy guard de cyanogenmod

Privacy Guard en mode expert

Qu’est-ce que j’ai touché ?

En gros, j’y suis allé comme un bourrin et j’ai limité le plus possible les permissions des applications natives de l’OS.

Il est possible d’aller très loin dans le paramétrage des applications, comme par exemple, restreindre le « Google Play Service » (que je continue à utiliser malgré moi car certaines applications ne sont pas disponibles depuis un F-Droid), ou encore empêcher l’interface tactile de fonctionner normalement.

J’ai fait le curieux sans réfléchir, du coup, je me suis forcément mis dedans et j’ai mis quelque chose comme plus de 3h pour comprendre d’où venait le problème et surtout comment le résoudre sans refaire une « fresh installe » …

Liste des symptômes rencontrés :

  • Démarrage OK
  • Déverrouillage de la session OK
  • Luminosité de l’écran qui diminue en permanence
  • Interface tactile qui freeze au bout de 10 secondes
  • Redémarrage en boucle du système

Là tout de suite, on est pas mal pour tenter un débogage non ? ^^

Il faut également savoir qu’en utilisant l’outil « ADB » il est possible de récupérer les logs du système, mais qu’apparemment ceux-ci sont effacés après le redémarrage de l’appareil.

Comment résoudre le problème ?

Après avoir parcouru le web en long, en large et en travers, je suis tombé sur un message dans le forum Cyanogen expliquant la chose suivante :

Privacy Guard stocke sa configuration dans un fichier .xml que l'on peut trouver dans la partition data du système.

Pour la faire courte, si j’arrive à supprimer ce fichier, au prochain reboot le Privacy Guard Manager pensera qu’aucune application n’a été limitée et le tout retombera en marche !!

Comme on dit … « yakafoke » !

Passage de l’appareil en mode « bootloader » !

Pour cette première étape, je vous laisse lire mon précédent article qui détaille :

  • Comment récupérer les outils nécessaires aux manipulations (adb + fastboot)
  • Comment télécharger le recovery mode TWRP

Montage de la partition « data » de notre appareil :

Une fois les étapes précédentes réalisées, il faut démarrer une console distante sur notre téléphone intelligent. Cette console nous permettra, entre autre, de monter la fameuse partition data dans laquelle nous retrouverons le fichier XML décrivant la configuration du Privacy Guard Manager !

Depuis le Terminal de votre ordinateur, exécuter cette ligne de commande :

adb shell

Vous obtiendrez le prompt suivant qui vous indiquera que vous êtes bien connecté à votre smartphone :

~ #
~ # whoami
root

Nous sommes bien connectés au système avec l’utilisateur root, cela nous permettra de posséder les permissions nécessaires pour poursuivre notre dépannage :)

Trouver la bonne partition à monter :

Monter une partition OK, mais laquelle ?

Pour trouver la réponse à cette question, il suffit d’exécuter (à votre guise) une des lignes de commande suivantes :

# Méthode "j'me prends pas la tête"
cat /etc/fstab
# Méthode "j'suis un fou dans ma tête"
grep -i "/data" /etc/fstab
# Méthode "/proc/mounts WTF is that ?!"
cat /proc/mounts
# Méthode "j'sais déjà ce que je cherche en fait !"
grep -i "/data" /proc/mounts

Exemple de retour de la méthode « j’me prends pas la tête » :

/dev/block/mmcblk0p25 /system ext4 rw 0 0
/dev/block/dm-0 /data ext4 rw 0 0
/dev/block/mmcblk0p27 /cache ext4 rw 0 0
/dev/block/mmcblk0p16 /persist ext4 rw 0 0
/dev/block/mmcblk0p1 /firmware vfat rw 0 0
/usb-otg vfat rw 0 0

Notre objectif ici est le suivant :

  • Trouver quel ‘block’ de la mémoire flash de notre appareil stocke les données du système
  • Récupérer l’identifiant du ‘block’ qui permet de monter la partition /data
  • Monter manuellement une partition à partir de ce ‘block’ mémoire

Sur la majorité des systèmes, c’est la partition /data qui stocke l’ensemble des données du système.

Monter la partition /data :

Yeaaah, on met les mains dans le cambouis !

Pour cela, toujours dans notre console distante, il faut exécuter la commande suivante :

mount -o rw,remount -t yaffs2 /dev/block/dm-0 /data

Si cette commande ne vous renvoie pas d’erreur, la partition a été montée et vous avez maintenant accès aux données qu’elle contient !

Informations bonus (ou pas) :

Vous vous demandez sûrement ce que signifie le paramètre -t yaffs2 ?
Si non, passer ce paragraphe, si oui, voilà de quoi assouvir votre curiosité :

Oui je sais … j’ai eu la flemme de traduire le tout en français ^^

Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash.  It is widely used with Linux, RTOSs, or no OS at all, in consumer devices. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.

Source : http://www.yaffs.net/

Réinitialiser la configuration du Privacy Guard :

Vous venez de faire le plus dur. La dernière étape consiste à dézinguer la configuration du Privacy Guard Manager et à redémarrer votre iDevice appareil ;)

Nous allons donc partir à la recherche du fichier suivant : /data/system/appops.xml

Yeaaah, on remet les mains dans le cambouis !

Pour cela, jouer les commandes suivantes :

# on se place dans le dossier qui contient notre fichier de configuration
cd /data/system
# on vérifie la présence du fichier recherché
ls -alh appops.xml
# on sauvegarde le fichier (on est jamais trop prudent)
cp appops.xml appops.xml.orig
# on supprime le fichier
rm appops.xml

Une fois cela fait, il suffit de redémarrer son appareil et de jouer un peu avec, afin de contrôler qu’il ne montre aucun signe de faiblesse.

# toujours dans notre console distance
reboot

Si c’est OK pour vous, vous pouvez alors reprendre le cours normal de votre vie ^^

Et n’oubliez surtout pas de réactiver la configuration du Privacy Guard Manager, mais sans être trop violent cette fois-ci sur les restrictions :)

Sources utilisées pour la rédaction de l’article :
CM13 nightly, privacy guard vs google play services bootloop – Source Forum CyanogenMod
Disable Cyanogen Privacy Guard from Shell – Source Android StackExchange
Mount a filesystem read-write – Source Android Tricks

Sources des images utilisées en illustrations :
* L’illustration principale de ce billet a été dénichée via le compte Twitter officiel @CyanogenMod

Aucun commentaire


N'hésitez pas, laissez un commentaire — DoFollow activé sur ce site —


« »