Une info 
à proposer ?
Contactez-nous !

Obtenir le code source des applications Android

Pour les developpeurs et pour notre culture Android il est utile de savoir comment obtenir le code source d'une application pour Android. Comment ? en la décompilant !

Les applications pour Android sont des fichiers ayant l'extension "APK".
En réalité elles sont compactées. Nous pouvons changer cette extension par "ZIP" ou "RAR" et la décompacter.


Nous aurons ainsi l'arborescence du projet et surtout à sa racine un fichier "classes.dex" qui contient toute l'intelligence de l'application.

Mais ce fichier ".DEX" est illisible.

Nous allons voir comment le décompiler et ainsi obtenir le code source en java du projet de l'application !

engrenages android

 

Il va nous falloir deux applications, plutôt trois en comptant winRAR.

- Dex2Jar : qui transformera le fichier "classes.dex" en "classes.dex.dex2jar.jar"
- Un décompilateur Java comme JD.

 

JD est proposé en application indépendante et en plug-in pour Eclipse. Ici j'ai choisi la version indépendante.(JD-GUI)
decompiler apk

Je vous propose de créer un dossier "modif_apk" à la racine de votre C: et d'y télécharger les deux archivers :
"dex2jar-0.0.7.7-SNAPSHOT.zip" et "jd-gui-0.3.3.windows.zip"

Extraire les 2  fichiers avec Winrar par un click droit sur l'archive en choississant "extraire vers" afin de créer un dossier pour les fichiers extraits.

Par exemple : le fichier "signedLatinIME.apk" qui est le clavier de Gingerbread.

Télécharger "signedLatinIME.apk" et renommer le en "signedLatinIME.rar", l'extraire avec Winrar en choisissant aussi "extraire vers"

 

Vous devriez avoir ça :

decompiler apk
Dans le dossier où vous avez extrait l'application clavier de Gingerbread vous trouverez un fichier nommé : "classes.dex" qui contient le code source "compilé" .
Copiez ce fichier dans le dossier "dex2jar-0.0.7.7-SNAPSHOT".

Le dossier "dex2jar-0.0.7.7-SNAPSHOT" devrait être comme ça :

dex2jar decompiler apk

Nous allons maintenant transformer "classe.dex"  en fichier .jar qui contient le code source du projet.

Pour cela ouvrez une console DOS par "démarrer", "exécuter" puis tapez cmd. Ou alors "démarrer", "tous les programmes", "accessoires", "invite de commande".

Dans cette console DOS tapez :

cd C:modif_apkdex2jar-0.0.7.7-SNAPSHOTdex2jar-0.0.7.7-SNAPSHOT
dex2jar classes.dex

 

La console devrait vous afficher :

Microsoft Windows XP [version 5.1.2600-->
(C) Copyright 1985-2001 Microsoft Corp.
C:Documents and Settings>c:
C:Documents and Settings>cd C:modif_apkdex2jar-0.0.7.7-SNAPSHOTdex2jar-0.0.7.7-SNAPSHOT
C:modif_apkdex2jar-0.0.7.7-SNAPSHOTdex2jar-0.0.7.7-SNAPSHOT>dex2jar classes.dex
version:0.0.7.7-SNAPSHOT
0 [main--> INFO pxb.android.dex2jar.v3.Main - dex2jar classes.dex -> classes.dex.dex2jar.jar
Done.
C:modif_apkdex2jar-0.0.7.7-SNAPSHOTdex2jar-0.0.7.7-SNAPSHOT>

COPIE ECRAN de la Console DOS :
consoleDos

Donc maintenant dans le dossier "C:modif_apkdex2jar-0.0.7.7-SNAPSHOT" vous devez  avoir un fichier : "classes.dex.dex2jar.jar" :

classe apk decompilee

Maintenant nous allons transformer ce fichier en code source java de l'application.

Allez dans le dossier "C:modif_apkjd-gui-0.3.3.windows" et lancez "jd-gui.exe".
java-decompiler apk android

Aller dans "File", "Open File", allez chercher le fichier "classes.dex.dex2jar.jar":

openjar decompiler apk android

Cliquer sur "Ouvrir"  et oh incroyable le projet de l'application s'affiche dans Java Decompiler :

apk decompilée dans Java
Cliquez sur l'image pour la voir en taille réelle.

Voila nous avons tout le code source du projet de l'application "signedLatinIME.apk".

Amusez-vous bien :)