Forums GAMERGEN
[TUTO] Debugger dans l'émulateur Android
Voir le premier message non lu • 4 messages
• Page 1 sur 1
[TUTO] Debugger dans l'émulateur Android
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
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 :
Passons à la suite...
III - Communication avec l'émulateur :
Pour cela, nous allons avoir besoin de faire une petite redirection de port :
On a donc redirigé le port 1234/TCP de l'émulateur Android, vers le port 1234/TCP de notre machine. Vous devriez obtenir ceci :
IV - Installation du GDB Server sur l'émulateur :
Dans votre terminal local entrez les commandes suivantes :
Comme sur la capture suivante :
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 :
Comme vous pouvez le constater, elle se trouve bien sur le téléphone :
2) GDB Server in action :
Lancez un shell distant :
Où PID est le pid de votre application à debugger. Et pour le retrouver une simple commande dans le shell Android :
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.
Maintenant dans notre terminal local, il suffit de lancer le client GDB de la manière suivante :
Il ne reste plus qu'à s'en servir, mais ça n'est pas notre sujet ^^
Bon debug à tous !
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
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 :
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 :
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 :
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.
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 ^^
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
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
- Messages: 205
- Inscription: 30 Juil 2010, 07:43
- Prénom: Yannick
- Pays: France
- Sexe: Homme
Re: [TUTO] Debugger dans l'émulateur Android
Merci pour le tuto
-
saman11
Gamer Maitre
- Messages: 282
- Inscription: 29 Juil 2010, 12:34
- Prénom: Saman
- Pays: France
- Sexe: Homme
Re: [TUTO] Debugger dans l'émulateur Android
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
- 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
De rien !
Si j'ai des nouvelles astuces je vous en ferai part.
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
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
- Messages: 205
- Inscription: 30 Juil 2010, 07:43
- Prénom: Yannick
- Pays: France
- Sexe: Homme
4 messages
• Page 1 sur 1