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

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

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.

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.

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

Remarque

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.

adb forward tcp:23946 tcp:23946

Remarque

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.

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

Débogage dynamique

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

Débogage dynamique

Débogage dynamique

Débogage dynamique

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.