# Clé de signature du noyau

La signature du noyau Android est un mécanisme de sécurité qui assure que le noyau d'un appareil Android n'a pas été modifié ou altéré. Le noyau est une partie essentielle du système d'exploitation Android, responsable de la gestion des ressources matérielles de l'appareil, de la sécurité et de la stabilité globale du système.

La signature du noyau est basée sur un algorithme de hachage cryptographique qui est utilisé pour générer une empreinte numérique unique du noyau. Cette empreinte numérique est ensuite signée avec une clé privée, créant ainsi une signature numérique.

Lorsque le système d'exploitation Android démarre, il vérifie la signature du noyau pour s'assurer que le noyau n'a pas été altéré. Si la signature n'est pas valide, le système ne démarre pas et affiche un avertissement à l'utilisateur.

La signature du noyau est une mesure de sécurité importante qui empêche les logiciels malveillants de modifier le noyau pour accéder aux données ou prendre le contrôle de l'appareil. Cependant, les utilisateurs avancés qui ont rooté leur appareil peuvent momentanément désactiver cette verification pour remplacer le noyau système. En vérifiant l'intégrité du noyau de l'appareil, une application a ainsi la possibilité de différencier un appareil rooté d'un appareil non rooté.

Il exite deux types de clés, les `Release-Keys` et les `Test-Keys` ont à voir avec la façon dont le noyau est signé lorsqu'il est compilé. Release-Keys signifie qu'il a été signé avec une clé officielle d'un développeur officiel. Test-Keys signifie qu'il a été signé avec une clé personnalisée générée par un développeur tiers. Ainsi, lorsque vous trouvez des clés de test sur le noyau, cela signifie que l'appareil est rooté. On peut retrouver le type de clé utilisée dans un fichier stocké dans le répertoire `/system/build.prop`.

Cette vérification fait appel à la fonction `Android.os.Build.TAGS`.

## Contournement

<figure><img src="/files/xyNIDHH3drpx0a14WX5T" alt=""><figcaption><p>Avant modification</p></figcaption></figure>

Contourner cette vérification est simple. il s'agit simplement de retrouver la fonction permettant de matcher la vérification de la chaîne de caratère "test-keys" dans le code smali.

<figure><img src="/files/JxPKSv2Yg2gMGC4Ip5WS" alt=""><figcaption></figcaption></figure>

Puis de retrouver ce bout de code dans les fichiers smali (afin de se facilité la vie, vous pouvez utiliser la commande grep pour retrouver la chaîne de caractère précise).

<figure><img src="/files/T03UqLmSD2Fyuo5DJSiY" alt=""><figcaption></figcaption></figure>

Il suffit ensuite d'édité le fichier .smali se chargeant de l'activité permettant de faire la validation de la clé en remplaçant la chaîne de caractères "test-keys" par "release-keys".

La dernière étape est alors ensuite de recompilier et auto-signer l'application comme présenté dans la section reverse engineering.

<figure><img src="/files/5GiWqPDxBKZSeiuoqTkA" alt=""><figcaption><p>Même tâche après la modification</p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/pentest-mobile/android/bypass/contournement-des-detections-de-rootage/cle-de-signature-du-noyau.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
