publié par jdecool

Il y a quelque mois, j’avais expliqué comment il était possible de détourner le système de licence mis en place par Google pour protéger les applications Android. J’ai décidé ce soir d’écrire un billet montrant comment décompiler une application Android afin d’obtenir le code source Java de cette dernière.

Ce document est le fruit d’un travail inachevé conduit en 48h. Le but du projet était de créer une API Java permettant d’interagir avec le réseau Viadeo. Pour y parvenir, j’avais décidé de prendre comme base l’application Viadeo disponible sur l’Android Market afin de la décompiler et d’extraire les méthodes utilisées par l’application pour fonctionner.

Commençons le travail ! La première chose à effectuer est de télécharger l’application sur l’Android Market. Nous allons également y récupérer l’application AppMonster. Cette dernière est un gestionnaire de programme qui nous permettra notamment d’effectuer un backup de l’application sur notre carte SD pour que nous puissions par le suite le transférer sur un ordinateur.

Une fois les deux applications téléchargées et installées, lancez AppMonster. Dans la liste des applications disponibles, sélectionnez l’application Viadeo et sélectionnez Backup to SD dans le menu qui s’ouvre pour lancer la copie. Une fois le backup terminé, reliez votre téléphone ou votre carte SD à un ordinateur. Un dossier appmanager doit être présent dans lequel se trouve l’application Viadeo sous la forme d’un fichier APK. Copiez ce dernier dans un répertoire de votre ordinateur.

Une archive APK n’étant qu’un fichier compressé, nous allons en extraire son contenu. Pour cela utiliser votre outil habituel tel que Winzip, Winrar ou 7zip.

Le fichier classes.dex qui est le fichier contenant le code de l’application Android à exécuter est alors extrait. Nous allons maintenant procéder à sa décompilation. Pour cela, nous utiliserons l’outil baksmali. Après l’avoir télécharger lancer la commande suivante pour démarrer la décompilation : java –jar baksmali.jar classes.dex

Maintenant cette étape terminée, nous pouvons constater qu’un répertoire out contenant l’ensemble des packages Java de l’application a été créé. Les répertoires des packages contiennent des fichiers .smali qui sont des fichiers en langage (une sorte de byte-code ou d’assembleur).

Arrivé à ce stade, il est possible de travailler ces fichiers de code source. Mais il serait plus simple de travailler directement avec des sources Java pour arriver à comprendre le code plus facilement. Pour ce faire, nous allons procéder en 2 étapes.

Nous allons repartir de l’étape précédente, à savoir du fichier classes.dex. Téléchargez l’outil qui se nomme dex2jar afin de convertir notre fichier dex en une archive Java standard. Une fois effectué, entrez la commande suivante : ./dex2jar.sh classes.dex (ou dex2jar.bat classes.dex si vous êtes sous Windows). A l’issu de cette commande un fichier classes.dex.dex2jar.jar doit être créé.

La décompilation de l’application est presque terminé. Il nous manque encore un outil pour pouvoir visualiser le code source de l’archive. Pour cela, télécharger l’application JD-GUI. Lancer l’application et sélectionner le fichier JAR pour pouvoir visualiser le code source de l’application Android.

Popularity: 1% [?]

Tags: , , , , , , , ,