0 votes

SELinux a restreint mon application système alors qu'elle était signée avec la même clé que celle livrée précédemment !

Eh bien, j'ai quelque chose de bizarre qui se passe. Je pensais bricoler avec Dotcase.apk de CyanogenMod 13, donc j'ai pu reconstruire l'apk. Je me suis même assuré de le signer avec la clé de test Platform Android (j'ai vérifié, l'APK original a été signé avec cette même clé ! J'ai extrait le CERT.RSA et comparé les certificats - ils sont les mêmes).

J'ai ensuite remplacé les APK dans /system/priv-app/Dotcase, en remplaçant Dotcase.apk par ma propre construction - fondamentalement la même que celle qui a été livrée, aucun code n'a été modifié, je l'ai simplement construite moi-même.

L'application Dotcase utilise UEventObserver et ouvre un fichier "DEVPATH=/devices/virtual/switch/cover".

Et c'est là que le problème se pose. SELinux me donne un mal de tête avec le message :

07-29 01:07:56.918  4902  4902 W UEventObserver: type=1400 audit(0.0:1229): avc: denied { create } for scontext=u:r:platform_app:s0:c512,c768 tcontext=u:r:platform_app:s0:c512,c768 tclass=netlink_kobject_uevent_socket permissive=0

après cela, l'application se plante, emportant avec elle com.Android.systemui, avec :

07-29 01:07:56.960  2558  4902 E AndroidRuntime: java.lang.RuntimeException: Unable to open socket for UEventObserver

alors que la même application avec le même code et la même clé de signature est bien.

J'ai essayé quelques trucs qui impliquent l'utilisation de quelque chose comme supolicy de SuperSU, etc, sans succès - il semble que l'application (qui démarre en tant que android:sharedUserId="android.uid.systemui" ) commence avant que tout le reste ne se mette en place.

Maintenant les questions :

  1. Qu'est-ce que j'ai fait de mal ?

  2. Comment le réparer ?

  3. Y a-t-il peut-être une possibilité de désactiver complètement SELinux en Parcheando quelque chose dans /system - au moins pour le moment, pendant que je bricole ?

  4. Ou la seule option est de construire toute l'image rom cyanogenmod avec mes modifications à chaque fois que j'ai besoin de tester un petit changement ? :(

PS : l'appareil est le HTC M9 GSM (himaul)

0voto

syreeni Points 71

J'ai découvert que j'ai tout gâché. Je l'ai construit avec le mauvais manifeste. Ça aurait dû être android:sharedUserId="android.uid.system" au lieu de android:sharedUserId="android.uid.systemui" . Quand j'ai comparé les manifestes (merci à apktool d'avoir décrypté le manifeste pour moi !) c'est devenu évident. Remplacer les bits concernés dans le manifeste l'a réparé. Problème résolu. Probablement que j'ai juste utilisé le mauvais dépôt.

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