Le disque dur de mon ordinateur portable vient de tomber en panne et j'ai perdu tout le code source d'une application sur laquelle je travaille depuis deux mois. Tout ce que j'ai, c'est le fichier APK qui est stocké dans mon e-mail lorsque je l'ai envoyé à un ami.
Existe-t-il un moyen d'extraire mon code source de ce fichier APK?
android
android-resources
decompiling
apk
Frank Bozzo
la source
la source
javac -decompile
, ce qui correspondrait alors aux lignes directrices sur les SO. Il me semble que les réponses sont hors sujet , pas la question.Réponses:
Manière simple: utilisez l'outil en ligne http://www.javadecompilers.com/apk , téléchargez apk et obtenez le code source.
Procédure de décodage des fichiers .apk, méthode pas à pas:
Étape 1:
Créez un nouveau dossier et copiez le fichier .apk que vous souhaitez décoder.
Maintenant, renommez l'extension de ce fichier .apk en .zip (par exemple renommez de filename.apk en filename.zip) et enregistrez-la. Vous pouvez maintenant accéder aux fichiers classes.dex, etc. À ce stade, vous pouvez voir les fichiers dessinables 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échargez dex2jar et extrayez-le 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 le répertoire dans ce dossier (ou NOUVEAU DOSSIER). Ensuite, écrivez
d2j-dex2jar classes.dex
(pour le terminal Mac ou l'écriture Ubuntu./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 le fichier ouvert et ouvrez le fichier classes.dex.dex2jar à partir 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. À 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 souhaitez décoder
Téléchargez la dernière version d' apktool ET la fenêtre d'installation d'apktool (les deux peuvent être téléchargées à partir du même lien) et placez-les dans le même dossier
Ouvrez une fenêtre de commande
Maintenant, exécutez la commande comme
apktool if framework-res.apk
(si vous ne l'avez pas, obtenez-la ici ) et ensuiteapktool d myApp.apk
(où myApp.apk désigne le nom de 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.
Étape 4:
Ce n'est pas une étape, copiez simplement le contenu des deux dossiers (dans ce cas, les deux nouveaux dossiers) dans le seul
et profitez du code source ...
la source
framework-res.apk
. Téléchargez-le d' iciCeci est une description alternative - juste au cas où quelqu'un serait coincé avec la description ci-dessus. Suis les étapes:
apktool.bat
(ouapktool
pour Linux) etapktool_<version>.jar
depuis http://ibotpeaches.github.io/Apktool/install/apktool.jar
et placer les deux fichiers dans le même dossiercmd.exe
) et placez-vous dans ce dossier; vérifier qu'un environnement Java est installé (pour Linux, vérifiez également les notes concernant les bibliothèques requises)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
de http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=classes.dex
surdex2jar.bat
(ou entrez<path_to>\dex2jar.bat classes.dex
dans une boîte DOS; pour une utilisation Linuxdex2jar.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 n'est pas autorisé de décompiler 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 obscurci
la source
apktool
retoursmali
? Comment obtenir unjava
fichier?Bien que vous puissiez décompiler votre
APK
fichier, vous rencontrerez probablement un gros problème:ça ne va pas retourner le code que vous avez écrit. Il va à la place retourner tout ce que le compilateur a inséré, avec des variables aux noms aléatoires, ainsi que des fonctions aux noms aléatoires. Il pourrait prendre beaucoup plus de temps pour essayer de décompiler et de le restaurer dans le code que vous aviez, que ce ne sera pour recommencer.
Malheureusement, des choses comme celle-ci ont tué de nombreux projets.
Pour l'avenir, je recommande fortement d'apprendre un système de contrôle de version, comme CVS , SVN et git etc.
et comment le sauvegarder.
la source
Il y a aussi une nouvelle application sur le Play Store avec laquelle il est possible de décompiler un apk (applications système aussi) et de visualiser le code source directement sur votre smartphone. Il enregistre les fichiers sur votre carte SD afin que vous puissiez également les visualiser sur votre ordinateur. Il ne nécessite ni root ni autre chose.
Installez-le et amusez-vous. Je pense que c'est le moyen le plus simple de décompiler une application.
la source
apktool est la meilleure chose que vous puissiez essayer. J'ai enregistré du xml avec, mais honnêtement, je ne sais pas comment cela fonctionnera avec le code .java.
Je vous recommanderais d'avoir un référentiel de code même si vous êtes le seul codeur. J'utilise Project Locker pour mes propres projets. Il vous donne gratuitement des dépôts svn et git.
la source
Ces deux articles décrivent comment combiner l'utilisation
apktool
et ladex2jar
prise d'unAPK
fichier et créer un projet Eclipse qui peut le générer et l'exécuter.Fondamentalement, vous:
apktool
pour extraire les fichiers de ressources de l'apkdex2jar
pour obtenir un fichier jar qui contient les classes dans un format qui plaît à Eclipse.JDGui
pour afficher le code sourceJDGui
, collez-le dans une classe dans Eclipse et modifiez-lela source
apktool fonctionnera. Vous n'avez même pas besoin de connaître le magasin 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 se révèlent parfaitement bien et cela peut valoir la peine de récupérer au moins ceux-ci. En fin de compte, vous devrez très probablement réécrire votre code Java à partir de zéro.
Vous pouvez trouver apktool ici . Téléchargez simplement 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.
la source
Il y a quelques façons de le faire:
Utilisez la fonction «Profil ou débogage APK» dans Android Studio 3.0.
Il vous permet d'ouvrir et d'explorer des fichiers APK dans Android Studio. Les cours sont décompilés en smali. Les ressources ne sont pas extraites et des choses comme "Aller à la définition", "Trouver 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écompile le code d'un APK donné en fichiers source java.
Utilisez apktool .
Apktool est un outil en ligne de commande qui extrait les ressources et décompile le code en smali pour une apk donnée. Vous pouvez également recompiler en utilisant apktool. En voici un exemple en action:
la source
Peut être le plus facile de voir la source:
Android 2.3 en studio,
Build -> Analyze APK -> Select the apk that you want to decompile
.Vous verrez son code source.
Lien de référence:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2
la source
Je vais vous montrer une autre façon de décompiler les fichiers .apk .
Vous pouvez suivre les 2 premières étapes de " prankul garg ". Vous avez donc 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 un fichier> 'a trouvé votre fichier .jar '). Après cette procédure, vous pouvez enregistrer toutes les ressources dans un fichier .zip .
Donc,
1er - Vous devez renommer le fichier .apk en .zip
2e - 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
la source
Ci - dessous LIGNE outil:
http://www.javadecompilers.com/apk
il fait TOUT en un seul clic: fichiers .java décompilés + ressources + xml (dans un fichier .zip) avec un très bon décompilateur (jadx retourne le code java dans les endroits / fonctions où d'autres compilations renvoient des commentaires à l'intérieur de la fonction comme "incapable de décompiler" ou certains assembleur android / code machine)
la source
Ce site https://www.apkdecompilers.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.
la source
Je recommande personnellement Show Java Android App pour obtenir le code source. Vous pouvez le télécharger depuis Play Store ou d' ici
la source
Apktool pour la rétro-ingénierie d'applications tierces fermées et binaires pour Android.
Il peut décoder les ressources dans une forme presque originale et les reconstruire après avoir effectué quelques modifications.
Il permet de déboguer le code smali étape par étape. Cela facilite également le travail avec une application en raison de la structure de fichiers de type projet et de l'automatisation de certaines tâches répétitives telles que la construction d'apk, etc.
http://ibotpeaches.github.io/Apktool/
la source
apktool est LA voie à suivre. Le service apktool en ligne existe également: http://www.javadecompilers.com/apktool
Certaines limitations existent, bien sûr, en raison de la «nature en ligne» du service: vous pouvez extraire et rechercher des actifs et le fichier manifeste, mais il est impossible de recompiler l'application pour le moment.
Pourtant, c'est un moyen simple pour «ouvrir» l'application Android.
la source
Vous pouvez essayer DexPatcher . Il s'intègre même à Android Studio. Il utilise Apktool et Dex2Jar en interne.
Vous pouvez également utiliser ces outils indépendamment. Apktool décompile 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 similitude du code décompilé avec le code réel ne puisse pas être garantie. Il existe des outils avancés d' obfuscation de code disponibles sur le marché, qui gâchent le code pour le rendre difficile à décompiler / à comprendre. par exemple. Proguard
la source
en fonction de votre état, si votre apk Android:
Condition 1: PAS durcir (par Tencent Legu / Qihoo 360 / ...)
Choix 1: utiliser le service en ligne
tel que:
en utilisant www.javadecompilers.com
aller à:
décoder automatiquement d'apk en java sourcecode
pas:
upload
apk file + clickRun
+ wait some time + clickDownload
to get zip + unzip ->sources/com/{yourCompanyName}/{yourProjectName}
est votre code source Java attendu
Choix 2: décompiler / cracker par vous-même
utilisez l'outil associé pour décompiler / cracker par vous-même:
utiliser
jadx
/jadx-gui
convertirapk
enjava sourcecode
téléchargez jadx-0.9.0.zip puis décompressez pour obtenir
bin/jadx
, puis:jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
sources
etresources
sources/com/{yourCompanyName}/{yourProjectName}
est votre attentejava sourcecode
jadx-0.9.0/bin/jadx-gui
(Linuxjadx-gui.sh
/ Windowsjadx-gui.bat
)apk
fichiersave all
ousave as Gradle project
par exemple:
Condition2: durcir (par Tencent Legu / Qihoo 360 / ...)
la principale méthode de
3 steps
:apk/app to dex
dex to jar
jar to java src
explication détaillée:
Étape 1:
apk/app to dex
utiliser l'outil (
FDex2
/ DumpDex) dump / hook out (one or multiple)dex
file from running apppas:
préparer l'environnement
root
ed androïdeFDex2
/ DumpDex dans XPosed et l'activervidage
dex
de l'application en cours d'exécutionexécuter
FDex2
puis cliquez sur votre nom apk pour permettre plus tard de capturer / déconnecter dex/data/data/com/yourCompanyName/yourProjectName
dex
fichiersÉtape 2:
dex to jar
utiliser l'outil (
dex2jar
) convertir ledex
fichier (spécifique, contenant la logique de l'application) enjar
fichiertéléchargez dex2jar got dex-tools-2.1-SNAPSHOT.zip , dézippez got
dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh
, puissh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex
par exemple:
Étape 3:
jar to java src
utilisez l'un des outils:
convertir
jar
enjava src
pour un effet de conversion jar en java src:
Jadx
>Procyon
>CRF
>>JD-GUI
alors recommande l'utilisation:
Jadx
/jadx-gui
pas:
jadx-gui
dex
fichierFile
->save all
par exemple:
java src exporté:
Une explication plus détaillée peut voir mon tutoriel ebook chinois en ligne :
la source
Android studio vous propose d'analyser n'importe quel fichier apk.
1 - Dans le menu de construction, choisissez l'option d'analyse apk et sélectionnez le fichier apk. 2 - Cela vous donnera le fichier classes.dex et d'autres fichiers. 3 - Cliquez sur classes.dex qui vous donnera la liste des dossiers, packages, bibliothèques et fichiers. 4 - Depuis les paramètres du studio Android et installez un plugin appelé "Dex to Jar" 5 - cliquez sur n'importe quel fichier d'activité de votre projet extrait et choisissez dex to jar dans le menu de construction.
Cela vous donnera le code réel de votre fichier java.
À votre santé.
la source
Le moyen le plus simple consiste à utiliser Apk OneClick Decompiler. Il s'agit d'un ensemble d'outils pour décompiler et désassembler les fichiers APK (packages Android).
TRAITS
EXIGENCES
Java Runtime Environment (JRE) doit être installé.
Vous pouvez le télécharger à partir de ce lien Apk OneClick Decompiler
Profitez-en.
la source
J'ai trouvé ce qui suit comme la méthode la plus simple:
la source
Il existe une application pour cela et ne prend généralement que quelques clics et vous avez terminé. https://github.com/Nuvolect/DeepDive-Android
Après cela, vous pouvez parcourir le code source, le télécharger sur un autre ordinateur avec elFinder ou le rechercher à l'aide de Lucene.
En plus de Jadx, il dispose de décompilateurs CFR et Fernflower.
la source
Je me suis rendu fou pendant des jours en essayant de faire fonctionner dex2jar sur un ordinateur portable fedora 31 contre une apk qui n'allait tout simplement pas fonctionner. Ce script python 3 a fait l'affaire en quelques minutes et l'installation de jd-gui a rendu les fichiers de classe lisibles par l'homme.
http://java-decompiler.github.io/
https://github.com/Storyyeller/enjarify
spécifiquement, voici ce que j'ai couru:
Maintenant, on devrait être capable de ruminer ce qui suit pour obtenir des fichiers de classe:
Et pour démarrer jd-gui:
Ensuite, ouvrez simplement vos fichiers de classe!
la source
J'ai développé un Outil - Analyseur de Code, il fonctionne sur iPhone / iPad / Mac, pour analyser les fichiers Java / Android, https://decompile.io
la source
Utilisez cet outil http://www.javadecompilers.com/
Mais récemment, une nouvelle vague de décompilateurs a fait son apparition sur le marché: Procyon, CFR, JD, Fernflower, Krakatau, Candle.
Voici une liste des décompilateurs présentés sur ce site:
CFR - gratuit, pas de code source disponible, http://www.benf.org/other/cfr/ Auteur: Lee Benfield
Décompilateur très bien mis à jour! CFR est capable de décompiler les fonctionnalités Java modernes - modules Java 9, lambdas Java 8, commutateurs de chaîne Java 7, etc.
JD - gratuit pour un usage non commercial uniquement, http://jd.benow.ca/ Auteur: Emmanuel Dupuy
Mise à jour en 2015. Possède sa propre interface visuelle et ses plugins pour Eclipse et IntelliJ. Écrit en C ++, donc très rapide. Prend en charge Java 5.
Procyon - open-source, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler Auteur: Mike Strobel
Fernflower - open-source, https://github.com/fesh0r/fernflower Auteur: Egor Ushakov
Mis à jour en 2015. Décompilateur Java analytique très prometteur, devient maintenant une partie intégrante d'IntelliJ 14. ( https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler ) Prend en charge Java jusqu'à la version 6 (Annotations, génériques, énumérations)
JAD - donné ici uniquement pour des raisons historiques. Gratuit, pas de code source disponible, miroir de téléchargement jad Auteur: Pavel Kouznetsov
la source