> For the complete documentation index, see [llms.txt](https://blog.s1rn3tz.ovh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.s1rn3tz.ovh/pentest-mobile/android/setup-environnement.md).

# Setup environnement

## Outils

### Android Studio IDE

Android Studio est l'IDE officiel pour le développement Android et comprend tout ce dont vous avez besoin pour créer des applications Android.

ressource: <https://developer.android.com/studio/releases>

### Pen-Andro

Script permettant d'automatiser l'intallations d'applications, frida-server et le certificat burp suite.

ressource: <https://github.com/raoshaab/Pen-Andro>

### Scrcpy

Scrcpy est un outil pratique de mirroring d'écran d'appareil android vers un PC utile pour manipuler son appareil physique depuis un PC.

Ressource: [https://github.com/Genymobile/scrcpy](https://github.com/Genymobile/scrcpy?tab=readme-ov-file)

### PixelFlasher

PixelFlasher est un outil permettant de flash des firmwares sur les modèles Google Pixel. Il est très interessant notamment pour rooter facilement et rapidement des appareils physiques et dispose d'autres fonctionnalités comme la possibilité d'ouvrir des shells adb, d'ouvrir un mirroring d'écran avec Scrcpy, de servir d'app manager etc directement depuis sont interface graphique.

Ressource: <https://github.com/badabing2005/PixelFlasher>

## Rootage

### Simple et efficace

Un moyen simple, rapide et efficace d'avoir un appareil rooté pour les tests d'intrusion se trouve dans les smartphone Google Pixel.

Google est beaucoup moins restrictif sur le dévérouillage de bootloader que la majoriter des autres producteurs d'appareils sous Android.

De plus, la communauté Google/Android est très active est il existe aujourd'hui des outils comme PixelFlasher qui permettent d'automatiser quasiment intégralement la procédure de rootage des Google Pixel ce qui permet d'avoir un appareil rooté en quelques minutes seulement avec Magisk.

#### Etape 1: Unlock bootloader

{% hint style="danger" %}
**Attention**:&#x20;

* Débloquer le bootloader efface les données de l'appareil (prenez soin de faire une sauvegarde complète de celui-ci s'il n'est pas déjà vide)

* Débloquer le bootloader annule toute garantie constructeur si l'appareil en bénéficie
  {% endhint %}

* Activer le mode développeur (**Settings** ⇒ **About Phone** ⇒ Taps sur "**Build number**" jusqu'à activation)

* Aller ensuite dans l'onglet **System** ⇒ **Developer options**,

* Activer les options **OEM unlocking** et **USB debugging**

* Redémarrer sur le bootloader
  * adb reboot bootloader
  * Ou manuellement, Power Off ⇒ Volume Down + Power

* Débloquer le bootloader
  * fastboot flashing unlock

* Utiliser le bouton de volume bas et selectionner "UNLOCK THE BOOTLOADER" avec le bouton Power

#### Etape 2: Choix de l'image

L'image à patcher sera évidemment différente selon l'appareil à rooter.

| Appareil          | Version Android | Image à patch      |
| ----------------- | --------------- | ------------------ |
| Pixel 7/8/9/10    | All versions    | **init\_boot.img** |
| Pixel 6           | Android 13+     | **init\_boot.img** |
| Pixel 6           | Android 12      | **boot.img**       |
| Pixel 5 and older | All versions    | **boot.img**       |

#### Etape 3: Laisser PixelFlasher faire le boulot

* Connecter l'appareil par cable (avec l'option USB debugging activée)
* Cliquer "Scan" en haut à droite de la fenêtre pour détecter l'appareil
* Importer l'image dans l'outil
* Cliquer sur "Process" toujours en haut à droite pour extraire le .img et traiter le firmware
* Cliquer sur l'image dans le tableau puis sur **Patch** ⇒ **Patch with Magisk**
* Selectionner l'image patchée et cliquer sur "**Flash Device**"

PixelFlasher s'occupe alors du reste et une fois l'appareil redémarré, il devrait être rooté.

Voir le Guide suivant pour plus de détails et plus de méthodes de rootage sur Google Pixel et sur d'autres modèles.

{% embed url="<https://awesome-android-root.org/rooting-guides/>" %}

## Setup

### lancement du service adb (Android Debug Bridge)

*`$ adb start-server`*

### Lancer une emulation

Créer un nouvel émulateur en utilisant le périphérique virtuel Android (AVD) Manager, qui est inclus dans Android Studio.&#x20;

* Accéder à AVD&#x20;
* Télécharger la version Android souhaitée&#x20;
* Installer la version choisie
* Nommez l'émulateur&#x20;
* Exécuter l'emulateur

#### Lancer un emulateur en ligne de commandes

`$ ./emulator -list-avds` //Permet de lister les AVDs disponibles

`$ ./emulator -avd <AVD_NAME> [-writable-system] [-snapshot <SnapName>]` //Permet de lancer l'AVD sélectionné (avec droits d'écriture sur le système et depuis un snapshot spécifique)

{% hint style="info" %}
**Note**: Si l'emulateur rencontre des problèmes de performances, utiliser les options suivantes pour limiter la consommation de ressources et utiliser le hardware plutôt que le software pour la gestion graphique:

`$ ./emulator -avd PixelSDK30 -no-snapshot -no-audio -camera-back none -camera-front none -gpu host`
{% endhint %}

### Faire un snapshot d'un emulateur

`$ adb emu avd snapshot save <SnapName>`

### Lister les emulateurs disponibles

*`$ adb devices`*

### Installer une application

*`$ adb -s <emulator name> install exemple.apk`*

### Extraire un apk

*`$ adb shell pm list packages #lister les packages`*

*`$ adb shell pm path <package>`*

*`$ adb pull /path/to/package==/exemple.apk`*

## Setup Burp Proxy

### Dans burp suite

1. Aller dans "Proxy > Options" puis cliquer sur "Import / export CA certificate"
2. Importer le certificat au format DER
3. Retourner dans "Options" et créer un nouveau listener sur le port souhaité et écoutant sur **toutes les interfaces**.

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

### Sur l'appareil Android

#### Méthode 1: Proxy via paramètres WIFI&#x20;

Aller dans les parametres WIFI avancés et ajouter un proxy à l'adresse de votre machine hôte et au port choisi dans burp.

#### Méthode 2: Global proxy

Ajouter un proxy:

*`$ adb shell settings put global http_proxy <IP>:<Port>`*

Supprimer le proxy:

*`$ adb shell settings put global http_proxy :0`*

### Sur l'appareil hôte

Convertir le fichier cacert.der importé en format accepté par l'appareil mobile comme ceci:

```
$ openssl x509 -inform DER -in cacert.der -out cacert.pem
puis,
$ CERT="`openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -1`.0"
puis,
$ mv cacert.pem $CERT
```

#### Copier le certificat dans l'appareil android

```
$ emulator -list-avds
<avd name>
$ emulator -avd "<avd name>" -http-proxy <ip proxy>:<port proxy> -writable-system

//Dans un autre terminal
$ adb root
$ adb remount
$ adb push 9a5ba575.0 /sdcard/
$ adb shell
# mount -o rw,remount /system
# mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/
# chmod 644 /system/etc/security/cacerts/9a5ba575.0
# reboot
```

## Patch APK

Cette étape permet d'ajouter les gadgets frida à une application afin de pouvoir hook l'application plus facilement. Pour cela il existe deux solutions...

### Solution automatique

Objection permet de faire ce patch automatiquement via la commande suivante:

*`$ objection patchapk -s example.apk [-t com.example.xyz.SpecificClass]`*

{% hint style="warning" %}
**Note**: Si il y a une erreur disant qu'il est impossible de décoder la ressource, il faut ajouter l'argument `--use-aapt2` à la commande.
{% endhint %}

Objection ajoutera alors la lib frida adaptée à l'architecture du device dans les libs et dans le code puis signera le nouvel apk (example.objection.apk). Une fois cela fait, il ne reste plus qu'a remplacer l'apk original par le nouvel apk sur l'appareil.

### Solution manuelle

Si la solution automatique ne fonctionne pas, il est nécessaire de faire la manipulation manuellement. Pour cela, suivre les instructions du site suivant:

{% embed url="<https://koz.io/using-frida-on-android-without-root/>" %}

## Outils

### Frida

Frida est une boîte à outils d'instrumentation de code dynamique. Il vous permet d'injecter des extraits de code JavaScript ou votre propre bibliothèque dans des applications natives sur Windows, macOS, GNU/Linux, iOS, watchOS, tvOS, Android, FreeBSD et QNX.

ressource: <https://frida.re/docs/installation/>

### Objection

Objection est une boîte à outils d'exploration mobile d'exécution, optimisée par Frida =, conçue pour vous aider à évaluer l'état de sécurité de vos applications mobiles, sans avoir besoin d'un jailbreak.

ressource: <https://github.com/sensepost/objection/>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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/setup-environnement.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.
