Vérification de la signature d'une application: son fonctionnement, sa désactivation avec Xposed et les raisons de son absence

Si vous avez déjà essayé de modifier et de réinstaller une application système, vous avez probablement rencontré des contrôles de signature d'application sous une forme ou une autre. Soit vous avez supprimé l'application d'origine avant de continuer, soit vous avez attribué à votre APK modifié un autre nom de package afin de l'installer sans supprimer au préalable l'ancienne application. Et dans les deux cas, vous deviez également signer à nouveau l’application pour pouvoir l’installer.

Vous pouvez contourner tous ces problèmes en désactivant temporairement les vérifications de signature de l'application. Mais avant d’entrer dans la métaphore de la viande et des pommes de terre de cet article et de vous expliquer comment faire, il est essentiel de parler un peu des contrôles de signature d’application, de ce qu’ils font et de la raison pour laquelle vous ne devriez jamais les supprimer dans la grande majorité des cas. cas.

Principes de base de la vérification de signature Android

Par défaut, le système d'exploitation Android nécessite la signature de toutes les applications pour pouvoir être installé. En termes très simples, cela signifie que la signature de l'application est utilisée pour identifier l'auteur d'une application ( c'est-à-dire pour vérifier sa légitimité), ainsi que pour établir des relations de confiance entre des applications portant la même signature. Dans le premier cas, vous êtes assuré (dans une mesure raisonnable) qu'une application avec une signature valide provient des développeurs attendus. Et à travers ce dernier, les applications signées avec la même clé privée peuvent s’exécuter dans le même processus et partager des données privées. Ensuite, lorsque vous installez une mise à jour d'application, le système d'exploitation Android vérifie cette signature pour s'assurer que: A) le fichier APK n'a pas été falsifié depuis sa signature et B) le certificat de l'application correspond à celui de la version actuellement installée.

Alors, comment tout cela me concerne dans le monde réel? C'est simple, vraiment. Si vous obtenez un fichier APK hors de Google Play Store et tentez de l'installer en tant que mise à jour de votre application actuellement installée (lisez: même nom de package), le système d'exploitation tentera de valider le certificat de l'application pour s'assurer qu'il provient bien du mêmes développeurs initiaux. Si le certificat correspond, l'installation de l'application se déroulera comme prévu, votre application conservera ses données existantes et tout ira bien. Si la signature n'est pas valide (indiquant que le fichier APK a été falsifié) ou si le certificat ne correspond pas à celui de l'application d'origine, l'installation échouera. Et comme indiqué précédemment, le certificat d'application ne correspond que s'il est signé avec la même clé privée que celle utilisée pour signer la version précédente. En d'autres termes, vous ne pouvez installer une application que si sa signature valide correspond au contenu de l'APK. Vous ne pouvez installer une mise à jour que si son certificat correspond également à celui de la version précédente de l'application.

[En termes humoristiques, dans cet article par ailleurs dense, il existe un exemple très public dans lequel une clé de signature d'application privée a été perdue ou compromise. Je fais bien sûr référence à la propre application Authenticator de Google, qui a reçu une mise à jour modifiant le nom de son package de com.google.android.apps.authenticator à com.google.android.apps.authenticator2 dans une mise à jour il y a environ deux ans. En raison de cette modification, toutes les mises à jour ultérieures de l'application Authenticator ne peuvent être émises que sous le nouveau nom de package, avec la nouvelle signature générée par la nouvelle clé de signature privée.]

Pourquoi souhaiter peut-être (temporairement) désactiver la vérification de la signature

Examinons maintenant un scénario potentiel dans lequel nous pourrions souhaiter désactiver temporairement la vérification de la signature de l'application. Comme indiqué au début de cet article, la vérification de la signature peut être un casse-tête lors de la modification d'applications système existantes. Si vous installez une version modifiée d'une application système, vous ne pourrez pas signer l'application avec un certificat valide et correspondant. Dans de tels cas, vous voudrez normalement d'abord supprimer l'application existante, puis installer la version modifiée normalement. Vous pouvez également désactiver la vérification de signature, mais il est préférable (et plus sûr) de laisser la vérification de signature activée et de simplement supprimer l'ancienne version pour que la nouvelle puisse être installée. Cela peut toutefois poser problème si l'application que vous essayez de remplacer contient des données que vous préférez ne pas perdre. Il existe certes des moyens de conserver les données manuellement à l'aide de l'accès root et de les transplanter dans la nouvelle version de l'application, mais les utilisateurs peuvent également souhaiter simplement désactiver temporairement la vérification de la signature, puis reprendre les contrôles ultérieurement. Alternativement, comme l'a souligné le membre principal mcbyte_it dans les commentaires, cela peut également être utile pour le développement d'applications.

Comment le faire

Jusqu'à présent, la désactivation de la vérification de signature était une solution horrible pour pratiquement tous les problèmes. En effet, lorsque vous le faites, vous supprimez essentiellement la protection intégrée d'Android qui garantit que vos applications n'ont pas été altérées et que leurs mises à jour proviennent des développeurs d'origine. Mais maintenant, grâce à la magie de Xposed Framework, vous pouvez désactiver temporairement la vérification de signature et la réactiver une fois que vous avez terminé l’installation de votre application modifiée. Un membre du module Xposed capable de le faire précisément a récemment été publié par pyler Senior Member et fonctionne comme prévu pour tous les périphériques capables d’exécuter Xposed. Ainsi, lorsque vous souhaitez installer une mise à jour d'application modifiée qui n'a pas été correctement signée, vous pouvez simplement activer le module, redémarrer, installer la mise à jour de l'application modifiée, désactiver le module, redémarrer et rester sur votre lancée.

Maintenant que vous savez comment désactiver temporairement la vérification de la signature, il est important de rappeler combien il est important de laisser la vérification de la signature activée à tout moment, sauf si vous avez une très, très bonne raison de la désactiver. En tant que tel, vous ne devriez vraiment utiliser un tel outil que pour appliquer les mises à jour d'applications que vous avez créées vous-même et lorsque des circonstances atténuantes vous obligent à le faire, plutôt que de désinstaller d'abord l'ancienne application.

Soyez prudent et utilisez-le judicieusement.