Vous le savez peut-ĂȘtre, les applications Android sont trĂšs simples Ă  analyser afin de comprendre leur fonctionnement interne. La raison ? Le code embarquĂ© est un code interprĂ©tĂ© par une machine virtuelle, ce qui signifie que la rĂ©tro-ingĂ©nierie permet de produire du code lisible par un humain, Ă  contrario du code assembleur, qui peut ĂȘtre fastidieux Ă  comprendre dans le cadre d'une application moderne.

Quel outil utiliser pour analyser un APK ?

L'outil le plus simple que j'ai trouvé actuellement pour décompiler une application Android est JADX.
Il s'agit d'un logiciel Opensource disponible sur GitHub et disponible en standard sous forme de paquet sur Kali Linux disponible sur Windows avec WSL2.

Son interface graphique permet en un clic de découvrir l'ensemble de la structure du code de l'application.
C'est aprÚs avoir cliqué sur la classe à analyser que l'outil génÚre du code Java à la volée.

jadx-gui

Comment télécharger un APK ?

Un APK est une version compilée et packagée d'une application Android. Les APK sont les fichiers que votre Smartphone télécharge quand vous installez une nouvelle application depuis un magasin d'application.

Les APK peuvent ĂȘtre facilement tĂ©lĂ©chargeables depuis des sites comme ApkPure par exemple. Ces sites proposent en libre tĂ©lĂ©chargement les APK de la majoritĂ© des applications disponibles sur les magasins d'application officiels.

Vous pouvez bien sûr tester cet outil sur votre propre application.

Est-ce que le reverse engineering est légal en France ?

Le reverse enginering de code est protégé en France par l'article L122-6-1 afin de permettre l'interopérabilité de logiciels.

Au-delĂ  d'un besoin d'interopĂ©rabilitĂ©, il est interdit de rĂ©aliser ce type de pratique sur des logiciels dont vous n'ĂȘtes pas l'auteur.

Comment modifier le code d'un APK ?

Il existe à ma connaissance deux possibilités :

  • GĂ©nĂ©rer un projet complĂštement vierge via l'export "Gradle" proposĂ© par Jadx. Mais attention, certaines classes peuvent provoquer des erreurs dans Jadx. Vous ne serez pas certain sur une application complexe d'obtenir l'exhaustivitĂ© du code source vous permettant de rĂ©gĂ©nĂ©rer une application neuve.

  • L'autre alternative est de modifier le code source via un format Smali, un format de code moins lisible que le Java mais facilement modifiable sans devoir recompiler l'ensemble de l'application.

Dans les deux cas, l'application produite devra ĂȘtre signĂ©e avec votre certificat de dĂ©veloppement pour pouvoir fonctionner sur un terminal Android.

Qu'est-ce que cela signifie pour la sécurité des applications Android ?

Si vous comptiez cacher des choses dans votre code : clef d'API, URL ... Sachez que ces éléments sont ouverts à tout pirate informatique qui peut s'intéresser la sécurité de l'application mobile.

Voici quelques recommandations :

  • Offusquer le code de vos applications avec des logiciels comme Proguard par exemple. Mais attention quand votre application crashera, il ne sera pas forcement Ă©vident de comprendre l'origine du crash ...
  • Ne stockez aucune donnĂ©e sensible dans votre application : Clef d'API, mot de passe ... Ces Ă©lĂ©ments de sĂ©curitĂ© sont trĂšs simples Ă  trouver depuis du code dĂ©compilĂ©.

En conclusion

J'espÚre que cet article vous aura été instructif. N'oubliez pas que le code d'une application Android n'est pas quelque chose de protégé par défaut, une grande majorité d'entre elles sur les stores n'ont pas de code offusqué et peuvent dévoiler leurs secrets à des développeurs malicieux.