Ayant un fichier .apk, y a-t-il un moyen d'obtenir son code source ?
Réponses
Trop de publicités?Même si ProGuard a été utilisé, vous pouvez obtenir des informations intéressantes. Voici une question StackOverflow avec une explication détaillée : Android : Obtenir le code source d'un fichier APK . Vidéo YouTube avec un guide détaillé . Et un article de blog à ce sujet : Comment récupérer le code source d'un fichier APK Android ? .
Si vous avez de la chance et que votre .apk
n'était pas protégé par Proguard ou analogique, vous pouvez utiliser Outil APK . Il s'agit d'un outil de rétroconception d'applications Android tierces, fermées et binaires.
De un des wiki communautaires de Parnkul Garg en SO :
Procédure de décodage des fichiers .apk, méthode étape par étape :
Étape 1 :
-
Créez un nouveau dossier et copiez-y le fichier .apk que vous voulez décoder.
-
Maintenant, renommez l'extension de ce fichier .apk en .zip (par exemple, renommez nomfichier.apk en nomfichier.zip) et enregistrez-le. Vous pouvez maintenant accéder aux fichiers classes.dex, etc. A ce stade, vous êtes capable de voir les drawables mais pas les fichiers xml et java, alors continuez.
Étape 2 :
-
Extrayez maintenant ce fichier .zip dans le même dossier (ou NOUVEAU DOSSIER).
-
Télécharger dex2jar et l'extraire dans le même dossier (ou NOUVEAU DOSSIER).
-
Déplacez le fichier classes.dex dans le dossier dex2jar.
-
Ouvrez maintenant l'invite de commande et changez de répertoire pour ce dossier (ou NOUVEAU DOSSIER). Puis écrivez
d2j-dex2jar classes.dex
et appuyez sur la touche Entrée. Vous avez maintenant le fichier classes.dex.dex2jar dans le même dossier. -
Télécharger le décompilateur java double-cliquez sur jd-gui, cliquez sur open file, et ouvrez le fichier classes.dex.dex2jar de ce dossier : vous obtenez maintenant des fichiers de classe.
-
Enregistrez tous ces fichiers de classe (dans jd-gui, cliquez sur Fichier -> Enregistrer toutes les sources) par le nom src. À ce stade, vous obtenez la source java mais les fichiers .xml sont toujours illisibles, alors continuez.
Étape 3 :
Maintenant, ouvrez un autre nouveau dossier
-
Mettez le fichier .apk que vous voulez décoder.
-
Téléchargez la dernière version de apktool ET fenêtre d'installation de l'apktool (les deux peuvent être téléchargés à partir du même lien) et les placer dans le même dossier
-
Télécharger cadre-res.apk et le mettre dans le même dossier (tous les fichiers apk n'ont pas besoin de ce fichier, mais ça ne fait pas de mal)
-
Ouvrir une fenêtre de commande
-
Naviguez dans le répertoire racine de APKtool et tapez la commande suivante :
apktool if framework-res.apk
-
apktool d myApp.apk
(où monApp.apk désigne le nom du fichier que vous voulez décoder)
Maintenant, vous obtenez un dossier de fichiers dans ce dossier et vous pouvez facilement lire les fichiers xml de l'apk.
Étape 4 :
Il n'y a aucune étape à suivre, il suffit de copier le contenu des deux dossiers (dans ce cas, les deux nouveaux dossiers) dans le seul dossier.
et profiter du code source...