«

»

Sep 07

Decompilation d’une application android

Une des faiblesse de faiblesse de JAVA est dû au fait qu’il est assez simple de décompiler les binaires produits.

Pour rappel, le code source JAVA est compilé dans un code intermédiaire appelé Byte-Code qui sera ensuite exécuter par la machine virtuelle JAVA. De même, Android, le code source d’un projet Android écrit en JAVA sera compiler dans un Byte-Code exécutable par la machine virtuelle Dalvik.

Pour la décompilation des programmes JAVA, il existe le logiciel JD-GUI qui en plus offre une interface graphique bien conviviale. JD-GUI permet de décompiler à la fois les fichiers *.JAR et les fichier *.CLASS seule. JD-GUI est un projet gratuit et est accessible à l’adresse : http://java.decompiler.free.fr/

Vu qu’ Android n’utilise pas la même machine virtuelle que JAVA, le chalenge pour pouvoir décompiler une application Android serait de traduire le binaire compilé pour Dalvik VM en binaire compréhensible par la machine virtuelle JAVA.

Pour ce faire, vous auriez besoin de deux outils bien complémentaire :

  1.  apktool : pour la décompilation des fichiers ressources -images, layout, …
  2. dex2jar : pour traduire le fichier *.APk – binaire pour Android- en fichier *JAR compréhensible par la machine virtuelle JAVA (JVM)

Une fois le fichier *.APK traduit en *.JAR vous pouvez utiliser JG-GUI pour accéder à tout le code source de l’application.