Est-il possible d'obtenir le code source d'un fichier APK?
le disque dur de mon ordinateur portable vient de s'écraser 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 à partir du moment où je l'ai envoyé à un ami.
est-il possible d'extraire mon code source de ce fichier APK?
16 réponses
voie Simple: utiliser l'outil en ligne http://www.javadecompilers.com/apk , téléchargez apk et récupérez le code source.
procédure de décodage .fichiers apk, étape par étape, la méthode:
Étape 1:
-
faites un nouveau dossier et copiez sur le .fichier apk que vous souhaitez décoder.
-
renommer maintenant l'extension de cette .apk fichier .zip (par exemple renommer à partir du nom de fichier.apk à nom de fichier.zip) et de l'enregistrer. Maintenant, vous pouvez accéder à la les classes.dex fichiers, etc. À ce stade, vous pouvez voir les drawables mais pas les fichiers xml et java, donc continuez.
Étape 2:
-
maintenant, extrayez ceci .fichier zip dans le même dossier (ou nouveau dossier).
-
Télécharger dex2jar et extrayez - le dans le même dossier (ou dans un nouveau dossier).
-
déplacer les classes.dex file dans le dossier dex2jar.
-
ouvrez maintenant l'invite de commande et changez le répertoire vers ce dossier (ou nouveau dossier). Ensuite, écrivez
d2j-dex2jar classes.dex
(pour Mac terminal ou ubuntu écrire./d2j-dex2jar.sh classes.dex
) et appuyez sur Entrée. Vous avez maintenant les classes.dex.dex2jar fichier dans le même dossier. -
Télécharger java decompiler , double-cliquer sur jd-gui, cliquer sur Ouvrir le fichier, et ouvrir les classes.dex.fichier dex2jar à partir de ce dossier: maintenant vous obtenez des fichiers de classe.
-
Sauvegardez tous ces fichiers de classe (dans jd-gui, cliquez sur Fichier -> Sauvegardez toutes les Sources) par nom src. À ce stade, vous obtenez la source java mais le .les fichiers xml sont toujours illisibles, alors continuez.
Étape 3:
Maintenant, ouvrez un autre nouveau dossier
-
Mis au .fichier apk que vous souhaitez décoder
-
Téléchargez la dernière version de apktool et apktool install window (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
-
exécuter maintenant la commande comme
apktool if framework-res.apk
et suivant -
apktool d myApp.apk
(où est myApp?apk indique le nom du fichier que vous voulez décoder)
maintenant vous obtenez un dossier de fichier dans ce dossier et pouvez facilement lire les fichiers xml de l'apk.
Étape 4:
ce n'est pas n'importe quelle étape il suffit de copier le contenu des deux dossiers(dans ce cas, les deux nouveaux dossiers)dans le seul dossier
et profitez du code source...
il s'agit d'une description alternative - juste au cas où quelqu'un est resté avec la description ci-dessus. Suivez les étapes:
- télécharger
apktool.bat
(ouapktool
Pour Linux) etapktool_<version>.jar
de http://ibotpeaches.github.io/Apktool/install/ - renommer le fichier jar d'en haut en
apktool.jar
et mettre les deux fichiers dans le même dossier - ouvrir une boîte dos (
cmd.exe
) et changer dans ce dossier; vérifier qu'un environnement Java est installé (pour Linux cochez également les notes concernant les bibliothèques nécessaires) - Début:
apktool decode [apk file]
résultats Intermédiaires : les fichiers de ressources,
AndroidManifest.xml
- décompresser fichier APK avec un unpacker de votre choix
résultat intermédiaire :
classes.dex
- télécharger et extraire
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= - glisser-déposer
classes.dex
surdex2jar.bat
(ou entrez<path_to>\dex2jar.bat classes.dex
dans une fenêtre DOS; pour Linux utiliserdex2jar.sh
)résultat intermédiaire :
classes_dex2jar.jar
- unpack
classes_dex2jar.jar
(peut être facultatif selon le décomposeur utilisé) - décompiler vos fichiers de classe (par exemple avec JD-GUI ou DJ Decompiler )
résultat : code source
Note: il n'est pas permis de décompiler les paquets de tiers; ce guide est destiné à récupérer le code source personnel à partir d'un fichier APK seulement; enfin, le code résultant sera très probablement brouillé
alors que vous pouvez être en mesure de décompiler votre fichier APK
, vous allez probablement frapper un grand problème:
il ne va pas retourner le code que vous avez écrit. Il va plutôt retourner quel que soit le compilateur inlined, avec des variables données des noms aléatoires, ainsi que des fonctions données des noms aléatoires. Il pourrait prendre beaucoup plus de temps pour tenter de décompiler et de restauration dans le code que vous avez eu, qu'il sera à recommencer.
malheureusement, des choses comme ça ont tué beaucoup de 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 y a aussi une nouvelle application sur le Play Store avec laquelle il est possible de décompiler une apk (applications système aussi) et voir le code source directement sur votre smartphone. Il sauve les dossiers à votre carte SD de sorte que vous pouvez le voir sur votre ordinateur aussi. Il ne nécessite pas de racine ou autre chose.
installez-vous et amusez-vous. Je pense que c'est le moyen le plus facile de décompiler une application.
apktool est la meilleure chose que vous pouvez essayer. J'ai sauvegardé un peu de xml avec, mais honnêtement je ne sais pas comment il va fonctionner avec le .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. Il vous donne libre 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 qui peut le construire et 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
basicly you:
- Utiliser
apktool
pour obtenir les fichiers de ressources de l'apk - utilisez
dex2jar
pour obtenir un fichier jar qui contient les classes dans un format qui plaira à Eclipse. - Créer un projet Eclipse de le pointer sur les fichiers de ressources et le nouveau fichier jar
- ouvrir le fichier jar avec un utilitaire zip et supprimer les ressources existantes""
- ouvrir le fichier jar avec
JDGui
pour voir le code source - prendre n'importe quel code source dont vous avez besoin de
JDGui
, le coller dans une classe à L'intérieur D'Eclipse et le modifier - supprimer cette classe du fichier jar (de sorte que vous n'avez pas la même classe définie plusieurs fois)
- lancez-le.
apktool fonctionnera. Vous n'avez même pas besoin de connaître le keystore pour extraire le code source (ce qui est un peu effrayant). Le principal inconvénient est que la source est présentée en format Smali au lieu de Java. D'autres dossiers tels que l'icône et les principaux.xml viennent par parfaitement bien cependant et il peut être la peine de votre temps pour au moins récupérer ceux-ci. En fin de compte, vous aurez très probablement besoin de réécrire votre code Java à partir de zéro.
vous pouvez trouver apktool ici . Il suffit 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 décompresser.
il y a plusieurs 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 APKs dans Android Studio. Les Classes sont décomposées 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 smali supplémentaires pourraient fonctionner avec smalidea .
-
Utiliser jadx .
jadx décompose le code dans un APK donné aux fichiers source java.
-
Utilisation apktool .
Apktool est un outil en ligne de commande qui extrait des ressources et décompose le code en smali pour une apk donnée. Vous pouvez recompiler en utilisant apktool aussi. 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 à voir la source:
Dans Android studio 2.3, Build -> Analyze APK -> Select the apk that you want to decompile
.
Vous verrez que c'est le code source.
Linf for reference:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2
je vais vous montrer une autre façon de décompiler le .apk "151920920 de fichiers".
vous pouvez suivre les 2 premières étapes de " prankul garg ". Vous avez donc une autre possibilité:
Étape 3':
télécharger le "JD-GUI" , thats facile à trouver celui-ci. Ouvrez votre .jar fichier dans " jd-gui.EXE." (Fichier > Ouvrir un fichier > " trouvé votre .jar fichier"). Après cette procédure, vous pouvez enregistrer toutes les ressources dans un .fichier zip .
,
1er - vous devez renommer le .apk fichier .zip
2nd - vous devez décoder .dex fichier (si vous voulez, décodez le .apk fichier à dex2jar , c'est possible)
3e - vous devez décoder .jar fichier JD-GUI
ci-dessous ONLINE tool:
http://www.javadecompilers.com/apk
faire TOUT par un seul clic: décompilé .fichiers java + ressources + xml (en un seul .fichier zip) avec un très bon décompilateur (jadx renvoie du code java dans les endroits/fonctions où d'autres compilateurs renvoient des commentaires à l'intérieur de la fonction comme "unable to decompile" ou certains code assembleur/machine android)
Apktool pour l'ingénierie inverse 3e partie, fermé, binaire des applications Android.
il peut décoder les ressources à la forme presque originale et les reconstruire après avoir fait quelques modifications.
permet de déboguer le code smali étape par étape. En outre, il rend le travail avec une application plus facile en raison de projet-comme la structure de fichiers et l'automatisation de certaines tâches répétitives comme la construction apk, etc.
ce site https://www.apkdecompilers.com / fait automatiquement.
j'ai essayé le site mentionné dans la réponse acceptée d'abord, mais cela n'a pas fonctionné pour moi.
apktool est LE chemin à parcourir. Le service apktool en ligne existe aussi bien: http://www.javadecompilers.com/apktool
certaines limites, évidemment, existent en raison du service "online nature": vous pouvez extraire et rechercher des actifs et le fichier manifeste, mais il est impossible de recompiler la demande à l'heure actuelle.
Encore, c'est un moyen sans tracas pour "ouvrir" l'application android.
vous pouvez essayer DexPatcher . Il s'intègre même avec Android Studio. Il utilise Apktool et Dex2Jar à l'intérieur.
Vous pouvez utiliser ces outils de façon autonome.
Apktool décompilation, apk, et les extraits .les fichiers dex, qui peuvent être convertis en jar en utilisant Dex2Jar. Jar peut être décomposé en utilisant JD-GUI . Vous pouvez voir le code Java avec le l'aide de cet outil. Bien que la similitude du code décomposé au code réel ne peut pas être garantie. Il y a quelques outils avancés code obfuscation disponibles sur le marché, qui gâchent le code pour le rendre difficile à décomposer / comprendre. par exemple. Proguard