Le disque dur de mon ordinateur portable est tombé en panne et j’ai perdu tout le code source d’une application sur laquelle je travaillais depuis deux mois. Tout ce que j’ai est le fichier APK qui est stocké dans mon email quand je l’ai envoyé à un ami.
Est-il possible d’extraire mon code source de ce fichier APK?
Manière simple: utilisez l’outil en ligne http://www.javadecomstackrs.com/apk , téléchargez apk et obtenez le code source.
Procédure de décodage des fichiers .apk, méthode pas à pas:
Créez un nouveau dossier et copiez le fichier .apk que vous souhaitez décoder.
Renommez maintenant l’extension de ce fichier .apk en .zip (par exemple, renommez filename.apk en filename.zip) et enregistrez-le. Maintenant, vous pouvez accéder aux fichiers classes.dex, etc. A ce stade, vous pouvez voir les fichiers tirables, mais pas les fichiers XML et Java, alors continuez.
Maintenant, extrayez ce fichier .zip dans le même dossier (ou NEW FOLDER).
Téléchargez dex2jar et extrayez-le dans le même dossier (ou NEW FOLDER).
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 NEW FOLDER). Ensuite, écrivez d2j-dex2jar classes.dex
(pour le terminal mac ou ubuntu écrivez ./d2j-dex2jar.sh classes.dex
) et appuyez sur Entrée. Vous avez maintenant le fichier classes.dex.dex2jar dans le même dossier.
Téléchargez le décompilateur Java , double-cliquez sur jd-gui, cliquez sur ouvrir le fichier et ouvrez le fichier classes.dex.dex2jar de ce dossier: vous obtenez maintenant les fichiers de classe.
Enregistrez tous ces fichiers de classe (dans jd-gui, cliquez sur Fichier -> Enregistrer toutes les sources) par nom src. A ce stade, vous obtenez le source java, mais les fichiers .xml sont toujours illisibles, alors continuez.
Ouvrez maintenant un autre nouveau dossier
Mettez dans le fichier .apk que vous souhaitez décoder
Téléchargez la dernière version de la fenêtre d’ installation d’ apktool AND apktool (les deux peuvent être téléchargés à partir du même lien) et placez-les dans le même dossier
Ouvrir une fenêtre de commande
Maintenant, lancez la commande comme apktool if framework-res.apk
et suivant
apktool d myApp.apk
(où myApp.apk indique le nom du fichier que vous souhaitez décoder)
maintenant vous obtenez un dossier de fichiers dans ce dossier et pouvez facilement lire les fichiers XML de l’apk.
Il ne suffit pas de copier le contenu des deux dossiers (dans ce cas les deux nouveaux dossiers) dans le dossier unique
et profiter du code source …
Ceci est une description alternative – juste au cas où quelqu’un serait coincé avec la description ci-dessus. Suis les étapes:
apktool.bat
(ou apktool
pour Linux) et apktool_.jar
depuis http://ibotpeaches.github.io/Apktool/install/ apktool.jar
et mettez les deux fichiers dans le même dossier
cmd.exe
( cmd.exe
) et changez dans ce dossier; vérifiez qu’un environnement Java est installé (pour Linux, vérifiez également les notes concernant les bibliothèques requirejses) apktool decode [apk file]
Résultat intermédiaire : fichiers de ressources, AndroidManifest.xml
Résultat intermédiaire : classes.dex
dex2jar-0.0.9.15.zip
depuis http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q= classes.dex
sur dex2jar.bat
(ou entrez \dex2jar.bat classes.dex
dans une boîte DOS; pour Linux, utilisez dex2jar.sh
)
Résultat intermédiaire : classes_dex2jar.jar
classes_dex2jar.jar
(peut être facultatif selon le décompilateur utilisé) Résultat : code source
Remarque: il est interdit de décomstackr des packages tiers; ce guide est destiné à récupérer le code source personnel à partir d’un fichier APK uniquement; enfin, le code résultant sera très probablement masqué
Bien que vous puissiez décomstackr votre fichier APK
, vous rencontrerez probablement un gros problème:
ça ne va pas retourner le code que vous avez écrit. Au lieu de cela, il va retourner ce que le compilateur a mis en place, avec des variables avec des noms aléatoires, ainsi que des fonctions avec des noms aléatoires. Cela pourrait prendre beaucoup plus de temps pour essayer de décomstackr et de restaurer le code que vous en aviez, que de recommencer.
Malheureusement, de telles choses ont tué de nombreux projets.
Pour l’avenir, je recommande fortement l’apprentissage d’un système de contrôle de version, comme CVS , SVN et git, etc.
et comment le sauvegarder.
Il existe également une nouvelle application sur le Play Store avec laquelle il est possible de décomstackr un apk (applications système également) et d’afficher le code source directement sur votre smartphone. Il enregistre les fichiers sur votre carte SD afin que vous puissiez les visualiser sur votre ordinateur. Il ne nécessite pas root ou autre chose.
Installez-vous et amusez-vous. Je pense que c’est le moyen le plus simple de décomstackr une application.
apktool est la meilleure chose que vous pouvez essayer. J’ai sauvegardé du XML, mais honnêtement, je ne sais pas comment cela fonctionnera avec le code .java.
Je vous recommande d’avoir un référentiel de code même si vous êtes le seul codeur. J’ai utilisé Project Locker pour mes propres projets. Cela vous donne gratuitement svn et git repos.
Ces deux articles décrivent comment combiner l’utilisation de apktool
et dex2jar
pour prendre un fichier APK
et créer un projet Eclipse capable de le générer et de l’exécuter.
http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html
http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html
En gros, vous:
apktool
pour extraire les fichiers de ressources de l’apk dex2jar
pour obtenir un fichier jar contenant les classes dans un format qui va plaire à Eclipse. JDGui
pour afficher le code source JDGui
, collez-le dans une classe à l’intérieur d’Eclipse et modifiez-le apktool fonctionnera. Vous n’avez même pas besoin de connaître le fichier de clés pour extraire le code source (ce qui est un peu effrayant). Le principal inconvénient est que la source est présentée au format Smali au lieu de Java. D’autres fichiers, tels que l’icône et main.xml, passent parfaitement bien et il peut être utile de récupérer ces fichiers. En fin de compte, vous devrez probablement réécrire votre code Java à partir de rien.
Vous pouvez trouver apktool ici . Il suffit de télécharger apktool et l’aide appropriée (pour Windows, Linux ou Mac OS). Je recommande d’utiliser un outil tel que 7-zip pour les déballer.
Il y a quelques façons de le faire:
Utilisez la fonctionnalité «Profil ou débogage APK» dans Android Studio 3.0.
Il vous permet d’ouvrir et d’explorer APK dans Android Studio. Les classes sont décompilées en smali. Les ressources ne sont pas extraites et des choses comme “Aller à la définition”, “Rechercher toutes les références” et le débogage ne fonctionnent pas sans le code source (android studio 3.0 canary 9). Certaines fonctionnalités supplémentaires de smali peuvent fonctionner avec smalidea .
Utilisez jadx .
Jadx décomstack le code dans un fichier APK donné en fichiers source Java.
Utilisez apktool .
Apktool est un outil en ligne de commande qui extrait les ressources et décomstack le code en smali pour un apk donné. Vous pouvez également recomstackr en utilisant apktool. En voici un exemple en action:
$ apktool d test.apk I: Using Apktool 2.2.4 on test.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... I: Loading resource table from file: 1.apk I: Regular manifest package... I: Decoding file-resources... I: Decoding values */* XMLs... I: Baksmaling classes.dex... I: Copying assets and libs... I: Copying unknown files... I: Copying original files... $ apktool b test I: Using Apktool 2.2.4 on test I: Checking whether sources has changed... I: Smaling smali folder into classes.dex... I: Checking whether resources has changed... I: Building resources... I: Building apk file... I: Copying unknown files/dir...
Peut-être le plus facile de voir la source:
Dans Android studio 2.3, Build -> Analyze APK -> Select the apk that you want to decomstack
.
Vous verrez son code source.
Linf pour référence:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2
Je vais vous montrer une autre façon de décomstackr les fichiers .apk .
Vous pouvez suivre les 2 premières étapes depuis ” prankul garg “. Donc, vous avez une autre opportunité:
Étape 3′:
Téléchargez le “JD-GUI” , c’est facile de trouver celui-ci. Ouvrez votre fichier .jar dans “jd-gui.exe”. (Fichier> Ouvrir le fichier> ‘a trouvé votre fichier .jar ‘). Après cette procédure, vous pouvez enregistrer toutes les ressources dans un fichier .zip .
Alors,
1er – Vous devez renommer le fichier .apk en .zip
2nd – Vous devez décoder le fichier .dex (si vous voulez, décoder le fichier .apk en dex2jar , c’est possible)
3ème – Vous devez décoder le fichier .jar avec JD-GUI
Ci-dessous outil en ligne:
http://www.javadecomstackrs.com/apk
il fait tout en un clic: fichiers .java décompilés + ressources + xml (dans un fichier .zip) avec un très bon décompilateur (jadx retourne du code java dans les lieux / fonctions où d’autres comstacknt des commentaires à l’intérieur de la fonction code assembleur / machine android)
Apktool pour l’ingénierie inverse des applications Android fermées, binarys.
Il peut décoder les ressources à une forme presque originale et les reconstruire après quelques modifications.
Il est possible de déboguer le code smali pas à pas. En outre, il est plus facile de travailler avec une application grâce à la structure de fichiers de type projet et à l’automatisation de tâches répétitives telles que la création de fichiers apk, etc.
Personnellement, je recommande Show Java Android App pour obtenir le code source. Vous pouvez le télécharger depuis Play Store ou d’ ici
apktool est la voie à suivre. Le service apktool en ligne existe également: http://www.javadecomstackrs.com/apktool
Certaines limitations existent évidemment en raison du service «nature en ligne»: vous pouvez extraire et rechercher des actifs et le fichier manifeste, mais il est impossible de recomstackr l’application pour le moment.
Néanmoins, il s’agit d’un moyen facile d’ouvrir l’application Android.
Ce site https://www.apkdecomstackrs.com/ l’a fait automatiquement.
J’ai d’abord essayé le site mentionné dans la réponse acceptée, mais cela n’a pas fonctionné pour moi.
Vous pouvez essayer DexPatcher . Il s’intègre même avec Android Studio. Il utilise Apktool et Dex2Jar en interne.
Vous pouvez également utiliser ces outils indépendamment. Apktool décomstack apk et extrait les fichiers .dex, qui peuvent ensuite être convertis en jar à l’aide de Dex2Jar. Jar peut être décompilé en utilisant JD-GUI . Vous pouvez voir le code Java à l’aide de cet outil. Bien que la similarité du code décompilé au code réel ne puisse être garantie. Il existe sur le marché des outils avancés d’ obscurcissement du code , qui gâchent le code pour le rendre difficile à décomstackr / à comprendre. par exemple. Proguard