# Déboguer des applications avec IDA

Ce chapitre vous montrera comment utiliser rapidement FIRERPA, ses fonctionnalités et ses scripts pour déboguer des applications Android. Notre environnement de démonstration est un système Android 10, avec un système hôte Ubuntu 22.04, sur lequel sont installés des outils tels que IDA 7.5 (wine), ADB, jdb, Python, etc. Il est recommandé d'utiliser IDA 7.5 ou une version ultérieure et d'installer la dernière version du serveur FIRERPA.

![Débogage dynamique](/assets/images/IDA.png)

## Activer le mode débogable

Avant de commencer, si votre système est déjà en mode débogage, vous pouvez ignorer cette étape. Sinon, veuillez ouvrir le bureau à distance de FIRERPA et saisir `setdebuggable` dans le terminal. Après avoir entré la commande, votre téléphone effectuera un redémarrage logiciel. Ne vous inquiétez pas, il reviendra à son état normal en environ deux minutes. À ce stade, votre téléphone sera en mode débogable.

![Débogage dynamique](/assets/images/debugger-setdebuggable.png)

## Installer le service de débogage IDA

Avant de continuer le débogage, vous devez également téléverser le serveur de débogage Android fourni avec IDA sur votre appareil. Vous pouvez trouver `android_server` et `android_server64` dans le répertoire `dbgsrv` de votre installation IDA. Si l'application cible que vous déboguez utilise des bibliothèques liées 32 bits, utilisez `android_server`. Sinon, utilisez `android_server64`. Glissez-déposez le fichier requis ou utilisez `adb push` pour le transférer sur l'appareil Android, puis donnez-lui les permissions d'exécution.

```bash
chmod 755 android_server*
```

Après avoir accordé les permissions d'exécution, vous devez démarrer le service android_server. Vous pouvez exécuter ce programme via adb (nécessite les privilèges root) ou via le terminal du bureau à distance. Pour les systèmes d'exploitation plus récents (>=10), vous devez définir au préalable la variable d'environnement `IDA_LIBC_PATH`.

```bash
IDA_LIBC_PATH=/apex/com.android.runtime/lib64/bionic/libc.so ./android_server64 -kk
```

```{note}
Pour les applications cibles 32 bits, vous devez modifier `IDA_LIBC_PATH` en `/apex/com.android.runtime/lib/bionic/libc.so` et utiliser le service de débogage `android_server` 32 bits.
```

## Rediriger le service de débogage IDA

Pour le débogage, qui exige une faible latence et des performances élevées, nous recommandons d'utiliser une connexion USB. Assurez-vous que votre appareil est connecté à l'ordinateur actuel et que l'autorisation adb a été accordée, puis exécutez la commande suivante.

```bash
adb forward tcp:23946 tcp:23946
```

```{note}
23946 est le port d'écoute par défaut pour `android_server` d'IDA. Si vous avez modifié ce port lors du lancement de `android_server`, veuillez le spécifier à nouveau.
```

## Démarrer le débogage de l'application

Nous n'avons pas fait grand-chose, nous avons simplement encapsulé un script pour vous aider à automatiser la plupart des opérations suivantes. Suivez simplement les instructions affichées par le script. Vous pouvez trouver le script `ida.py` dans le répertoire `tools` du projet et l'utiliser avec la commande suivante.

```bash
python3 ida.py -d 192.168.0.2 -a com.android.settings
```

![Débogage dynamique](/assets/images/debugger-cmd.png)

Ici, le paramètre `-d` est l'adresse IP de votre appareil, c'est-à-dire l'IP de l'appareil exécutant le service FIRERPA, et le paramètre `-a` est le nom du package de l'application. Après avoir exécuté la commande, vous serez invité à attacher votre logiciel IDA au processus de l'application.

![Débogage dynamique](/assets/images/debugger-attach.png)

![Débogage dynamique](/assets/images/debugger-setup.png)

<p align="center" style="margin-top:0px">
<img src="/assets/images/debugger-choice.png" alt="Débogage dynamique">
</p>

![Débogage dynamique](/assets/images/debugger-start.png)

Voilà, tout le processus est terminé. Veuillez retourner à la ligne de commande de `ida.py` et appuyer sur la touche Entrée. Vous pouvez maintenant continuer le débogage.