Modifier le fichier SystemUI.apk via APKTool

  • Auteur de la discussion Extranase
  • Date de début
Extranase

Extranase

Membre
Inscrit
17 Avril 2015
Messages
27
Points
0
  • #1
Bonjour

Mon problème: dans la barre de notification j'ai affiché tout en haut à gauche "Bouygues Telecom" qui prend une place énorme, du coup il ne reste de la place que pour 3 icônes de notifications, après un + s'affiche. J'aimerai donc pouvoir enlever ou remplacer le nom de mon opérateur par quelque chose de plus court (d'accord c'est du chipotage).

Les possibilités:
1/ installer une rom alternative
2/ trouver une appli qui le fasse (carrier changer marcherait a priori sur mon smartphone d'après des vieux commentaires, mais donner les droits su à une appli trouvée dans un coin de la toile, ou alors si qq1 à un lien de confiance je suis preneur aussi)
3/ modifier les fichiers système

Comme je suis curieux de nature et bricoleur dans l’âme, je testerai bien la 3eme solution (et en plus ca ferait une application de moins en mémoire). Sauf qu'à part des connaissances en php/html, xml voire une fois l'utilisation de ResHack pour décompiler et modifier un dll, ben j'y connais rien en cuisine....
J'ai fouillé un peu sur le net et j'ai réussi à décompiler mon SystemUI.apk avec APKTool.

Questions:
Si je me foire, y'a t'il moyen de remettre le fichier SystemUI.apk original en passant par ES File Explorer ou bien le téléphone ne boot carrément plus?
J'ai trouvé ca dans le fichier res/values/styles.xml
Code:
S'il vous plaît, Connexion ou S'inscrire to view codes content!
Est ce que c'est ici que je dois intervenir en changeant le 12.0dip par 0dip?

Mon smartphone: Motorola Razr HD (XT925)
Android 4.4.2
Bootloader deverouillé et phone rooté

Merci de m'avoir lu, si j'ai pas été assez précis je veux bien détailler plus. Toute aide est la bienvenue (lien vers un tuto ou une appli de confiance, conseils, ....) ca fait 1 heure que je fouille google, j'ai déjà trouvé pas mal de chose (notamment sur xda, mais concernant JB et non pas KK) mais là je suis un peu bloqué.
 
A

Anonymous

  • #2
Bonjour,
Je ne me prononcerai pas sur la modification et la procédure elle-même, mais en cas de plantage la seule et unique solution pour remettre le SystemUI.apk d'origine est selon moi de le faire en ligne de commande via une connexion ADB depuis un PC, à condition bien sûr d'avoir fait le nécessaire pour pouvoir avoir un shell root.
Il y a de grandes chances que l'interface graphique d'Android ne "monte" plus du tout en cas de SystemUI.apk foireux, et donc pas de launcher, aucun moyen de lancer un quelconque explorateur de fichier.
Le hic c'est que pour avoir un shell root par ADB, il faut que l'appli Superuser ou SuperSU tourne suffisamment pour que la commande su puisse obtenir une réponse. Je pense que seul le process sudaemon est nécessaire pour cela, et comme il n'a pas d'interface graphique cela devrait marcher ... mais je ne parierais pas ma chemise là-dessus !
Et il faut bien entendu avoir donné les droits root permanents au shell ADB la première fois que c'est demandé.
 
Extranase

Extranase

Membre
Inscrit
17 Avril 2015
Messages
27
Points
0
  • #3
Merci de ta réponse rapide. J'ai édité entre temps mon 1° message, je pense avoir trouvé l'endroit ou il faut changer le textsize.
Je n'ai pas compris plusieurs termes de ta réponse (je suis neewbie pour android), mais je vais faire mes recherches de mon coté :super: .
Sinon en changeant une valeur comme le textsize, il y a peu de risque que le fichier soit endommagé. Le risque ca serait plutôt une erreur de manip lorsque je décompile/recompile (mais si apktool ne me renvoie aucune erreur)?
 
A

Anonymous

  • #4
Je pense qu'il peut y avoir beaucoup de raisons pour lesquelles un SystemUI.apk même recompilé avec succès par APKTool ne fonctionne pas... tongue
Je serais très, très prudent.
Deux liens pour un "crash course" ADB :
:arrow: rooter-une-logicom-l-ixir-tab-701-3g-t116886.html#p1716943
:arrow:
 
Extranase

Extranase

Membre
Inscrit
17 Avril 2015
Messages
27
Points
0
  • #5
Merci bcp pour ton aide Coredump. J'avais commencé à regarder sur internet mais les liens que tu as postés sont clairs et brefs c'est génial
Je me lancerai peut être demain après avoir approfondi tout ca, et je vous dirais ce qu'il en ai
 
Extranase

Extranase

Membre
Inscrit
17 Avril 2015
Messages
27
Points
0
  • #6
J'ai caché mes mésavantures dans le spoiler pour éviter que le gros pâté de mots effraye les éventuels lecteurs de ce topic :D

Bon après une heure passée à essayer d'envoyer mon fichier avec adb (au cas ou ca plante comme ca je peux envoyer le backup sans passer par l'interface du téléphone), je commence à désespérer.

J'installe adb 1.0.32 avec le lien donné par coredump (15 seconds ADB Installer)

Je commence par un adb pull pour récupérer le fichier SystemUI.apk sur mon ordi (pour faire un backup) :arrow: Ok
Je tente naïvement un adb push pour envoyer mon systemUI modifié sur mon smartphont :arrow: failed permission denied
je donne les droits en écriture avec ES File explorer à group et a other sur le fichier et dossier et réessaie adb push :arrow: failed permission denied
je tente un adb root :arrow: adb cannot run as root in production builds
Je reprend l'exe adb que j'avais utilisé par rooter mon téléphone (en version 1.0.29), je fait un adb root :arrow: error: device offline
Je test adb devices :arrow: mon smartphone est marqué en offline
j'ai tenté de supprimer le fichier /data/misc/adb/adb_key sur le téléphone, redémarrer et tout mais toujours le même problème.

Est ce que je dois envoyer le fichier avec adb shell? Ou est ce que je dois utiliser une autre version de adb?

Edit:
Ok j'ai avancé. J'ai ressayé avec adb 1.0.32, fait un adb shell puis su et superSU sur le smartphone m'a proposé de donner les droits à adb shell
Donc ensuite je fais cp /system/priv-app/systemUI.apk /system/priv-app/systemUIbackup.apk et je me retrouve avec "Read-only file system"

Edit 2:
quand je suis dans shell je fais: mount -o rw,remount /system, je peux ensuite accéder au dossier system et y écrire. Du coup j'ai remplacé le fichier SystemUI modifié, et la j'ai "le processus com.android.systemui s'est interrompu" et je reste bloqué sur ce message (j'appuie sur ok mais il réapparait immédiatement). Par peur j'ai remis le fichier d'origine, le message reste toujours présent. Après reboot forcé mon interface foire encore, je lance ES explorer et je vois que System UI est en mode rw- rw- r--, je le met en rwx r-x r-x, reboot à nouveau et ca remarche comme avant.

Edit 3:
Mon fichier systemUI.apk ne fonctionne pas. L'avantage c'est que le smartphone fonctionne quand même (je n'ai pas la barre des notification ni les touches en bas retour, home, ... mais j'ai accès aux applications et je peux lancer facilement ES Explorer, remettre le fichier de backup en place et redémarrer le téléphone).
Donc en effet, même si APKtool m'a recompilé le fichier avec succès, il est foireux (d'ailleurs le fichier modifié fait 1.60Mo alors que d'origine il fait 1.59Mo, pourtant je n'ai rien ajouté, juste modifié un 12.0dip par 0.0dip)


Donc la question maintenant est: pourquoi mon fichier modifié SystemUI.apk ne fonctionne pas?
 
Extranase

Extranase

Membre
Inscrit
17 Avril 2015
Messages
27
Points
0
  • #7
Bon J'ai déjà passé bcp trop de temps dessus, mais je persiste. J'ai peut être trouvé la solution sur un forum anglais, quand je recompile il ne faut pas que je signe l'application, c'est ca? (Oui bon il me manque peut être les bases ;) )
 
A

Anonymous

  • #8
Désolé, je n'ai aucune expérience de première main de modification de SystemUI.
Je ferais comme toi, m'en remettre à ce qu'on trouve sur XDA...
 
Speedo4android

Speedo4android

Super VIP
Inscrit
3 Novembre 2014
Messages
2 568
Points
36
  • #9
Hello, il faut pas signer en effet.
Edit: ta modif est peut-être trop radicale, essaie 06.0dip ou 6.0dip. selon ton Windows verifie bien qu'il ne crée aucun fichier caché (les «thumb» de win xp). Ensuite compresse avec 7zip, et pour installer prefere un zip dédié c'est moins galère.
 
Extranase

Extranase

Membre
Inscrit
17 Avril 2015
Messages
27
Points
0
  • #10
Bonjour

J'ai retenté ce matin sans signer avec advanced apktool, mais ca ne marche toujours pas... Je comprends pas, pourtant apktool me dit que tout s'est bien passé autant dans la décompilation que dans la compilation. Le fichier que j’obtiens fait 1 683 699 octets alors que celui d'origine fait 1 671 464 octets, pourtant je n'ai ajouté aucun code, juste changé une valeur 12.0 par une valeur 0.0.

Ce que je vais faire dans la semaine, c'est décompiler/recompiler sans toucher à aucun fichier et tenter de lancer l'apk, comme ca je serais sur de savoir si ca viens de ma modification au de apktool.
 
Speedo4android

Speedo4android

Super VIP
Inscrit
3 Novembre 2014
Messages
2 568
Points
36
  • #11
La taille du fichier n'est pas responsable, ce n'est pas le problème.
 
A

Anonymous

  • #12
...car le taux de compression zip peut varier d'un outil à l'autre smiley
 
Speedo4android

Speedo4android

Super VIP
Inscrit
3 Novembre 2014
Messages
2 568
Points
36
  • #13
Yess,je fais toujours une version aucune compression pour le 1er flash, si ça marche bien, je refait en compression rapide (avec 7zip)
 
Extranase

Extranase

Membre
Inscrit
17 Avril 2015
Messages
27
Points
0
  • #14
Bon, petit retour.
J'ai tenté de décompiler et recompiler le fichier apk sans le modifier, et ca ne marche pas. Donc si ca plante ca ne provient pas de mes modifications.
J'ai réinstallé le framework (je n'en ai trouvé qu'un seul: framework-res.apk)

J'ai lu des dizaines de tutos, mais pas un seul d'identique (en fonction de l'outil, de la version du programme, de la version d'android ou du smartphone,...)

Bref j'ai besoin de conseils:
Est ce que je dois installer JDK ou JRE suffit?
J'ai testé avec AndroidMultitool mais j'ai des erreurs et je n'ai pas réussi à recompiler (ca a bloqué sans me mettre de log). Est ce qu'il y a d'autres outils?
Comment savoir ou ca bloque? ApKTool ne me sort aucune erreur du début à la fin.
Est ce que c'est un pb de signature? Je dois copier les META INF?

C'est normal que quand je compare l'apk originale avec celle recompilée, j'ai des différences (exemple layout-sw600dp devient layout-sw600dp-v13 et layout-sw600dp-v21)
 
Extranase

Extranase

Membre
Inscrit
17 Avril 2015
Messages
27
Points
0
  • #15
C'est bon ca marche. J'ai ouvert mes deux fichiers avec 7zip et j'ai juste fait un glissé déposé du fichier xml modifié de l'apk recompilé à l'apk d'origine.

Par contre je ne comprend pas ce que ne marchait pas lorsque je recompile

On voit qu'il y a plus de dossier dans le nouvel apk, et que le nom des dossiers a changé...
34taaeh.png



Avant -> Après
2w3rzwj.png
->
25tkghz.png


Est ce que je fais un tuto dans la partie Razr HD?
 
Speedo4android

Speedo4android

Super VIP
Inscrit
3 Novembre 2014
Messages
2 568
Points
36
  • #16
Bien joué, je sais pas pourquoi il te renommait tes fichiers, mais c'est intéressant de le savoir, si tu fais un tuto clair c'est cool, merci pour le partage.
 
Extranase

Extranase

Membre
Inscrit
17 Avril 2015
Messages
27
Points
0
  • #17
J'ai fait le tuto
 
Haut Bas