Aller au contenu
Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Comment décompiler une application Android (APK) et la recompiler ensuite

Le week-end dernier, j’ai bidouillé un peu sur mon smartphone Android. C’était merveilleux. Je l’ai rooté d’abord, car je voulais extraire une base de données d’une application, et également installer dessus des applications que j’aurai décompilées puis recompilées.

Je me suis dit que ce serait intéressant de vous faire un petit tuto reverse engineering d’application Android pour rigoler. C’est pas la première fois que je décompile un APK, mais c’était la première fois que je recompilais un truc modifié, donc si vous avez des précisions à apporter, d’autres outils ou des conseils, n’hésitez pas.

Récupérer l’APK

Pour récupérer l’APK, vous avez plusieurs possibilités. Vous pouvez passer APKGK pour récupérer l’APK qui vous intéresse, mais c’est une copie sur un site tiers, donc c’est pas forcément à jour.

Autrement, voici une méthode pour récupérer l’APK directement sur le smartphone. Votre téléphone doit être en mode développeur avec le debugging USB activé.

Vous devez également avoir le SDK Android sur votre ordinateur pour profiter des utilitaires, notamment ADB. Connectez votre smartphone Android à votre ordinateur en USB.

Ouvrez un terminal et entrez la commande suivante :

./adb devices

Vous verrez alors votre smartphone Android qui est bien connecté à votre ordinateur.

Téléchargement de l'APK de l'application Android

Ensuite, vous pouvez lister les applications installées sur votre smartphone à l’aide de la commande :

./adb shell pm list packages
Processus de décompilation et de recompilation d'une application Android

On va isoler l’application qui nous intéresse. Pour ma part, ce sera TousAntiCovid, dans le cadre de leur programme de Bug Bounty. Attention, la décompilation de logiciels est encadrée par la loi et vous trouverez plus d’infos ici. Techniquement, je n’ai pas altéré l’application en question, je l’ai juste décompilé puis recompilé pour valider le process technique. J’ai pris celle-ci pour l’exemple et ce tuto fonctionnera avec n’importe quelle application.

Pour filtrer un peu ça, utilisons un grep et mettons le mot clé de l’application que nous cherchons :

./adb shell pm list packages | grep covid
Fenêtre de terminal affichant la commande pour décompiler l'APK

On a donc le nom du package et ce qu’on aimerait, c’est le chemin pour récupérer l’APK. Pour cela, entrez la commande :

./adb shell pm path fr.gouv.android.stopcovid

Et vous aurez alors la liste des packages APK avec leur chemin d’accès.

Code source de l'APK décompilé dans Android Studio

Maintenant pour récupérer l’APK, rien de plus simple, il suffit de faire un petit adb pull.

./adb pull /data/app/fr.gouv.android.stopcovid-we-r7EfghHIaaEHoiugrwg==/base.apk

Bravo, vous venez de récupérer le .APK sur votre ordinateur !

Décompiler l’APK et lire le code

Maintenant on va regarder ce qu’il y a dedans.

Pour cela, il faut utiliser l’outil Apktool qui permet de désassembler l’APK et ses ressources, mais aussi de recompiler tout ça. Ici je décompile donc le fichier base.apk avec le paramètre « d ».

./apktool d base.apk
Modification du code source de l'application Android

Voilà, vous aurez le code, notamment des fichiers smali, qui est un équivalent lisible par un humain du code bas niveau Dalvik.

J’en conviens, ce n’est pas très user friendly donc je vous propose un logiciel complémentaire nommé JadX qui dispose d’une interface graphique et qui « traduit » le code smali en code java lisible par un informaticien lambda.

Recompilation de l'APK modifié

Une fois installé, lancez jadx-gui puis ouvrez l’APK. Vous aurez alors une jolie vue plongeante dans le code en java et son équivalent smali. Cela n’extrait pas directement le code comme apktool, mais permet de voir ce qu’il y a dans l’APK. Les 2 outils sont complémentaires.

Vous pouvez aussi faire des recherches sur certaines chaînes de caractères présentes dans le code :

Installation de l'APK recompilé sur un smartphone Android

Modifier le code

Par contre, vous ne pouvez pas modifier directement le code via Jadx. Utilisez simplement un éditeur texte ou votre éditeur de code préféré pour éditer les fichiers. Il faudra écrire votre code directement au format smali.

Vous pourrez aussi modifier les ressources (images, chaines de caractères…etc).

Recompiler l’application

Une fois les fichiers modifiés, vous pouvez recompiler l’app à l’aide de la commande apktool, comme ceci :

./apktool b DOSSIER-DES-SOURCES
Comparaison des fichiers de l'APK original et de l'APK recompilé

Et vous obtiendrez un APK. Mais attendez, ce n’est pas fini. Cet APK il va falloir le signer pour qu’Android accepte de l’installer.

Signer l’APK

Pour auto-signer un APK, vous devez d’abord créer une clé RSA sur votre ordinateur.

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Puis signer l’APK en utilisant cette clé :

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore VOTRE-APPLICATION.apk alias_name

Il existe aussi un outil qui fait le job qui s’appelle apksigner.

Outil de décompilation d'APK

Mettre l’application dans le smartphone

Ensuite, y’a plus qu’à transférer l’application sur le smartphone pour l’installer. Là vous avez plusieurs méthodes. Donc le transfert bête et méchant par mail, Dropbox ou ce que vous voulez.

Mais pour faire ça propre, vous pouvez également utiliser adb :

./adb push APPLICATION.apk /sdcard/

Ou pour l’installer directement depuis l’ordinateur sans la transférer, faites un :

./adb install APPLICATION.apk
Outil de recompilation d'APK

Et voilà ! Vous aurez ainsi votre application Android modifiée directement installée sur votre smartphone et y’a plus qu’à jouer avec.

Il se peut que selon la surcouche Android que vous avez, certaines sécurités soient en place. C’est le cas avec MIUI de Xiaomi qui scanne et contrôle la sécurité de la moindre application qu’on souhaite installer. Donc si ça ne s’installe pas directement, pensez à gratter un peu dans les options pour retirer les sécurités tout en ayant conscience que cela peut vous exposer à d’éventuels malwares ou cybercriminels. Donc, pensez à tout réactiver ensuite.


Comment supprimer vos données personnelles d’Internet avec Incogni ?

Espace partenaire

🔒Votre vie privée est-elle vraiment privée❓

😮Vous l’ignorez peut-être, mais des sociétés appelées Data Brokers collectent, agrègent et monnaient vos données personnelles sans votre consentement.

📝Votre nom, votre prénom, votre date de naissance, 📧 votre email, 🏠 votre adresse postale, et bien d’autres informations sont ainsi collectés pour être revendus à des publicitaires. Il est donc temps de reprendre le contrôle de vos informations personnelles grâce à Incogni

🛡️Incogni est un service qui se charge pour vous de contacter ces Data Brokers et d’exiger la suppression de vos données personnelles.

💥 Profitez d’une offre spéciale avec le code INCOGNI60 et ne laissez pas votre vie privée entre de mauvaises mains❗🙅‍♀️

👇🔍 CLIQUEZ ICI POUR EN SAVOIR PLUS 🔍👇

Les articles du moment