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 travaillais depuis deux mois. Tout ce que j'ai est le fichier APK qui est stocké dans mon email à partir du moment où je l'ai envoyé à un ami.
Est-il possible d'extraire mon code source de ce fichier APK?
Manière simple: utiliser l'outil en ligne http://www.javadecompilers.com/apk , télécharger apk et obtenir 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.
Maintenant, renommez l’extension de ce fichier .apk en .Zip (par exemple, renommez nomfichier.apk en nomfichier.Zip) et enregistrez-la. Vous pouvez maintenant accéder aux fichiers classes.dex, etc. À ce stade, vous pouvez voir les fichiers enregistrables mais pas les fichiers xml et Java. Continuez.
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 NEW FOLDER).
Déplacez le fichier classes.dex dans le dossier dex2jar.
Ouvrez maintenant l'invite de commande et changez de répertoire dans ce dossier (ou dans un nouveau dossier). Puis é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 Java decompiler , double-cliquez sur jd-gui, cliquez sur le fichier ouvert, puis 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 de src. À ce stade, vous obtenez la source Java, mais les fichiers .xml sont toujours illisibles. Continuez.
Maintenant, ouvrez un autre nouveau dossier
Mettez dans le fichier .apk que vous voulez décoder
Téléchargez la dernière version de (apktool ET fenêtre d'installation d'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
(si vous ne l'avez pas obtenez-le ici ) et ensuite
apktool d myApp.apk
(où myApp.apk indique le nom du fichier que vous souhaitez décoder)
maintenant, vous obtenez un dossier dans ce dossier et pouvez facilement lire les fichiers XML de l'APK.
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 ...
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_<version>.jar
à partir de 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érifiez 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
_ sur _dex2jar.bat
_ (ou entrez _<path_to>\dex2jar.bat classes.dex
_ dans une zone DOS; pour Linux, utilisez _dex2jar.sh
_) Résultat intermédiaire : _classes_dex2jar.jar
_
classes_dex2jar.jar
_ (peut être facultatif en fonction du décompilateur utilisé)Résultat : code source
Remarque: il est interdit de décompiler les 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 probablement obscurci
Bien que vous puissiez peut-être décompiler votre fichier APK
, vous rencontrerez probablement un problème important:
ça ne va pas retourner le code que vous avez écrit. Au lieu de cela, il retournera tout ce que le compilateur aura inséré, avec des variables ayant des noms aléatoires, ainsi que des fonctions ayant des noms aléatoires. Cela pourrait prendre beaucoup plus de temps pour essayer de décompiler et de restaurer dans le code que vous aviez, que de recommencer à zéro.
Malheureusement, de telles choses ont tué de nombreux projets.
Pour l’avenir, je recommande vivement l’apprentissage d’un système de contrôle de version, tel que 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écompiler 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 également les visualiser sur votre ordinateur. Il ne nécessite pas de racine ou autre chose.
Installez-vous et amusez-vous. Je pense que c'est le moyen le plus simple de décompiler une application.
apktool est la meilleure chose que vous puissiez essayer. J'ai sauvegardé du code 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 des repos svn et git gratuits.
Ces deux articles décrivent comment combiner l'utilisation de apktool
et dex2jar
pour créer un fichier APK
et créer un projet Eclipse capable de le construire 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'apkdex2jar
pour obtenir un fichier jar contenant les classes dans un format qui plaira à 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 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, fonctionnent parfaitement et il vaut peut-être la peine de les récupérer au moins. En fin de compte, vous devrez probablement réécrire votre code Java à partir de zéro.
Vous pouvez trouver apktool here . Il suffit simplement de télécharger apktool et l’assistant approprié (pour Windows, Linux ou Mac OS). Je recommande d'utiliser un outil tel que 7-Zip pour les décompresser.
Il y a quelques façons de le faire:
Utilisez la fonctionnalité "Profile or Debug APK" dans Android Studio 3.0.
Il vous permet d’ouvrir et d’explorer les fichiers APK dans Android Studio. Les classes sont décompilées en smali. Les ressources ne sont pas extraites et des éléments tels que "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 pourraient fonctionner avec smalidea .
Utilisez jadx .
Jadx décompile le code dans un fichier APK donné en Java fichiers source.
Utilisez apktool .
Apktool est un outil de ligne de commande qui extrait des ressources et décompile le code en smali pour un apk donné. Vous pouvez aussi recompiler 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 la plus facile à voir la source:
Dans Android studio 2.3, Build -> Analyze APK -> Select the apk that you want to decompile
.
Vous verrez son code source.
Lien pour référence:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2
Ci-dessous OUTIL EN LIGNE:
http://www.javadecompilers.com/apk
il fait TOUT en un clic: décompilé . Fichiers Java + ressources + xml (dans un fichier .Zip) avec un très bon décompilateur (jadx return Java code dans endroits/fonctions où d'autres compilations renvoient des commentaires à l'intérieur d'une fonction du type "incapable de décompiler" ou du code assembleur/machine Android
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.
Je vais vous montrer un autre moyen de décompiler les fichiers . Apk.
Vous pouvez suivre les 2 premières étapes à partir de "prankul garg". Donc, vous avez une autre opportunité:
étape 3 ':
Téléchargez le "JD-GUI", c'est facile de le trouver. Ouvrez votre fichier . Jar dans "jd-gui.exe". (Fichier> Ouvrir le fichier> 'trouvé votre . Jar fichier'). 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
2ème - Vous devez décoder le fichier . Dex (si vous le souhaitez, décodez le fichier . Apk en dex2jar, c'est possible)
3ème - Vous devez décoder . Jar fichier avec JD-GUI
Je recommande personnellement Afficher Java Android App pour obtenir le code source. Vous pouvez le télécharger à partir du Play Store ou de ici
Apktool pour le reverse engineering de tiers, fermés, binaires Android applications.
Il peut décoder les ressources à leur forme presque originale et les reconstruire après quelques modifications.
Cela permet de déboguer le code smali pas à pas. De plus, cela facilite le travail avec une application en raison de la structure de fichier semblable à celle du projet et de l’automatisation de certaines tâches répétitives telles que la construction d’apk, etc.
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é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 être garantie. Il existe certains outils avancés obscurcissement du code disponibles sur le marché, qui gâchent le code pour le rendre difficile à décompiler/comprendre. par exemple. Proguard
apktool est LA voie à suivre. Le service en ligne apktool existe aussi: http://www.javadecompilers.com/apktool
Il est évident que certaines limitations existent en raison du service "en ligne": vous pouvez extraire et rechercher des actifs et le fichier manifeste, mais il est impossible de recompiler l’application pour le moment.
Néanmoins, c’est un moyen simple d’ouvrir l'application Android.
Android studio vous propose d'analyser tous les fichiers apk.
1 - Dans le menu de construction, choisissez l’analyse apk et sélectionnez le fichier apk. 2 - Cela donnera le fichier classes.dex et d’autres fichiers. 3 - Cliquez sur classes.dex qui vous donnera la liste des dossiers, paquets, bibliothèques et fichiers. 4 - Depuis et Android paramètres du studio installer un plugin appelé "Dex to Jar" 5 - cliquez sur n'importe quel fichier d'activité de votre projet extrait et choisissez dex à jar dans le menu de construction.
Cela vous donnera le code réel de votre fichier Java.
À votre santé.
Le moyen le plus simple consiste à utiliser Apk OneClick Decompiler. C’est un paquet d’outils pour décompiler et désassembler les APK (paquets Android).
CARACTÉRISTIQUES
EXIGENCES
Java Runtime Environment (JRE) doit être installé.
Vous pouvez le télécharger à partir de ce lien Apk OneClick Decompiler
Profitez de ça.
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
Ensuite, 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 possède des décompilateurs CFR et Fernflower.
J'ai trouvé ce qui suit comme méthode la plus simple:
en fonction de votre condition, si votre apk Android:
tel que:
aller à:
décoder automatiquement d'apk en Java code source
pas:
upload
fichier apk + cliquez sur Run
+ attendez un peu de temps + cliquez sur Download
pour obtenir le Zip + décompresser ->
sources/com/{yourCompanyName}/{yourProjectName}
est votre code source Java attendu
utilisez l'outil associé pour décompiler/craquer vous-même:
jadx
/jadx-gui
convertir apk
en Java sourcecode
télécharger 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
et resources
décodéssources/com/{yourCompanyName}/{yourProjectName}
est votre prévu Java sourcecode
jadx-0.9.0/bin/jadx-gui
(Linux jadx-gui.sh
/Windows jadx-gui.bat
)apk
save all
ou save as Gradle project
par exemple:
la méthode principale de 3 steps
:
apk/app to dex
dex to jar
jar to Java src
explication détaillée:
apk/app to dex
utiliser l'outil (FDex2
/DumpDex) dump/hook out (un ou plusieurs) fichier dex
depuis l'application en cours d'exécution
pas:
root
ed Android FDex2
/ DumpDex dans XPosed et activez-le dex
à partir de l'application en cours d'exécutionlancez FDex2
puis cliquez sur votre nom d'apk pour permettre à plus tard de capturer/déconnecter dex
/data/data/com/yourCompanyName/yourProjectName
dex
dex to jar
utiliser l'outil (dex2jar
) pour convertir (le fichier spécifique contenant la logique d'application) le fichier dex
en fichier jar
télécharger dex2jar obtenu dex-tools-2.1-SNAPSHOT.Zip , décompressez obtenu dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh
, puis
sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex
par exemple:
dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar
jar to Java src
utiliser un des outils:
convertir jar
en Java src
pour de jar à Java effet de conversion src:
Jadx
> Procyon
> CRF
>> JD-GUI
recommande donc d'utiliser: Jadx
/jadx-gui
pas:
jadx-gui
dex
File
-> save all
par exemple:
exporté Java src:
Des explications plus détaillées peuvent voir mon ebook en ligne Chinois tutoriel: