Forums GAMERGEN

[TUTO] Debugger dans l'émulateur Android

[TUTO] Debugger dans l'émulateur Android

Message non lupar 6SiCK6 » 30 Juil 2010, 15:55

Notez que ce tuto est disponible sur DevsGen

Dans le cadre de mon boulot, j'ai dû installer le SDK Android pour fuzzer l'installeur d'applications android (format APK), et j'ai eu besoin à un moment de debugger. D' où quelques recherches pour trouver comment faire ^^. Et pour être sûr de retrouver ces infos de façon quasi certaine, je met ce petit tuto ici.

Allez hop, c'est parti !

I - Prérequis :

Pour effectuer mes bidouilles, je suis sur une machine équipée d'un ArchLinux 64 bits, je ne parlerai donc pas des autres OS (MacOS et Windows) qui, à peu de choses près doivent marcher pareil.

Autre prérequis : avoir installé le SDK, si c'est pas fait z'avez rien à faire ici ^^ ! Non je déconne si c'est pas fait vous trouverez le tuto de Seb sur DevsGen, ici :P

Le dernier et pas des moindres : avoir besoin de debugger son appli android !



II - Installation du NDK :

1) Récupérer le NDK :
Pour debugger une application Android, on a besoin d'un debugger (on s'en serait douté, n'est-ce pas?). Et figurez vous que GDB pour les téléphones Android existe bel et bien, et est fourni avec le NDK (Native Development Kit) Android, que vous trouverez à ICI.

Une fois que vous avez récupéré le NDK, et que vous l'avez extrait à l'endroit de votre choix, nous pouvons enchaîner !

2) Ajouter le chemin vers le NDK à vos variables d'environnement :
Je vais pas vous expliquer comment on fait car si vous lisez ce tuto c'est que vous en connaissez un minimum là dessus ^^ !
Je vous donne juste le dossier à ajouter à votre PATH :
Code: Select All Code
home/<votre_login>/android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin


Passons à la suite...

III - Communication avec l'émulateur :

Pour cela, nous allons avoir besoin de faire une petite redirection de port :
Code: Select All Code
telnet localhost 5554
redir add tcp:1234:1234


On a donc redirigé le port 1234/TCP de l'émulateur Android, vers le port 1234/TCP de notre machine. Vous devriez obtenir ceci :

Image


IV - Installation du GDB Server sur l'émulateur :

Dans votre terminal local entrez les commandes suivantes :

Code: Select All Code
$ cd android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/
$ adb start-server (si ce n'est pas déjà fait)
$ adb push gdbserver /data/local


Comme sur la capture suivante :
Image


Si ça s'est bien passé, nous pouvons continuer et passer à la partie cruciale de ce tuto : utiliser notre GDB sur l'émulateur !

V - Let's debug :

1) "Background" :

Pour illustrer mes propos, je me suis servi d'une application issue du challenge SSTIC 2010 nommée com.anssi.textviewer.apk, qui affiche uniquement un texte chiffré, mais là n'est pas la question. Donc, pour installer cette appli sur l'émulateur, dans votre terminal local, tapez :
Code: Select All Code
[yannick@fuzzy ~]$ adb install com.anssi.textviewer.apk
366 KB/s (16372 bytes in 0.043s)
   pkg: /data/local/tmp/com.anssi.textviewer.apk
Success


Comme vous pouvez le constater, elle se trouve bien sur le téléphone :

Image et Image


2) GDB Server in action :

Lancez un shell distant :

Code: Select All Code
$ adb shell
# cd /data/local
# ./gdbserver localhost:1234 --attach <PID>


Où PID est le pid de votre application à debugger. Et pour le retrouver une simple commande dans le shell Android :

Code: Select All Code
# ps


Notez que grep ne fonctionne pas dans ce shell donc il faut chercher "à la main" notre appli (ici com.anssi.textviewer) et prendre le PID correspondant.

Image


Maintenant dans notre terminal local, il suffit de lancer le client GDB de la manière suivante :
Code: Select All Code
~/android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gdb


Il ne reste plus qu'à s'en servir, mais ça n'est pas notre sujet ^^

Image


Bon debug à tous !
iPhone/iPad Developper
MacBook Pro 15" Snow Leopard (10.6.4) / Windows Seven x64 (BootCamp)
Dell Latitude E6400 - Arch Linux x64
iPhone 3G 8Go iOS 4.0 GM
iPhone 4 32 Go Black
6SiCK6 Gamer Pro
Gamer Pro
Messages: 205
Inscription: 30 Juil 2010, 07:43
Prénom: Yannick
Pays: France
Sexe: Homme

Re: [TUTO] Debugger dans l'émulateur Android

Message non lupar saman11 » 31 Juil 2010, 01:02

Merci pour le tuto :D
saman11 Gamer Maitre
Gamer Maitre
Messages: 282
Inscription: 29 Juil 2010, 12:34
Prénom: Saman
Pays: France
Sexe: Homme

Re: [TUTO] Debugger dans l'émulateur Android

Message non lupar bajam » 31 Juil 2010, 02:28

Good !! Good bon tuto, bravo et Merci, jvais essayer pour ma part d'en faire un sur tous ce qu'est flash et backup :)
bajam Gamer Maitre
Gamer Maitre
Messages: 276
Inscription: 29 Juil 2010, 17:23
Localisation: (55) Meuse
Prénom: Benjamin
Pays: France
Sexe: Homme

Re: [TUTO] Debugger dans l'émulateur Android

Message non lupar 6SiCK6 » 01 Aoû 2010, 11:50

De rien !

Si j'ai des nouvelles astuces je vous en ferai part.
iPhone/iPad Developper
MacBook Pro 15" Snow Leopard (10.6.4) / Windows Seven x64 (BootCamp)
Dell Latitude E6400 - Arch Linux x64
iPhone 3G 8Go iOS 4.0 GM
iPhone 4 32 Go Black
6SiCK6 Gamer Pro
Gamer Pro
Messages: 205
Inscription: 30 Juil 2010, 07:43
Prénom: Yannick
Pays: France
Sexe: Homme


 

Retourner vers Vos tutos et astuces Android