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?

1071
demandé sur Jeroen Vannevel 2010-08-29 07:40:13

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:

  1. faites un nouveau dossier et copiez sur le .fichier apk que vous souhaitez décoder.

  2. 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:

  1. maintenant, extrayez ceci .fichier zip dans le même dossier (ou nouveau dossier).

  2. Télécharger dex2jar et extrayez - le dans le même dossier (ou dans un nouveau dossier).

  3. déplacer les classes.dex file dans le dossier dex2jar.

  4. 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.

  5. 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.

  6. 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

  1. Mis au .fichier apk que vous souhaitez décoder

  2. 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

  3. ouvrir une fenêtre de commande

  4. exécuter maintenant la commande comme apktool if framework-res.apk et suivant

  5. 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...

1408
répondu Prankul Garg 2017-06-14 12:11:15

il s'agit d'une description alternative - juste au cas où quelqu'un est resté avec la description ci-dessus. Suivez les étapes:

  1. télécharger apktool.bat (ou apktool Pour Linux) et apktool_<version>.jar de http://ibotpeaches.github.io/Apktool/install/
  2. renommer le fichier jar d'en haut en apktool.jar et mettre les deux fichiers dans le même dossier

  3. 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)
  4. Début: apktool decode [apk file]

    résultats Intermédiaires : les fichiers de ressources, AndroidManifest.xml

  5. décompresser fichier APK avec un unpacker de votre choix

    résultat intermédiaire : classes.dex

  6. 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=
  7. glisser-déposer classes.dex sur dex2jar.bat (ou entrez <path_to>\dex2jar.bat classes.dex dans une fenêtre DOS; pour Linux utiliser dex2jar.sh )

    résultat intermédiaire : classes_dex2jar.jar

  8. unpack classes_dex2jar.jar (peut être facultatif selon le décomposeur utilisé)
  9. 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é

108
répondu Trinimon 2016-10-12 00:47:17

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.

99
répondu Ryan Gooler 2016-06-14 11:59:05

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.

47
répondu Cilenco 2014-01-11 12:49:24

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.

24
répondu Macarse 2016-08-05 07:04:47

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:

  1. Utiliser apktool pour obtenir les fichiers de ressources de l'apk
  2. utilisez dex2jar pour obtenir un fichier jar qui contient les classes dans un format qui plaira à Eclipse.
  3. Créer un projet Eclipse de le pointer sur les fichiers de ressources et le nouveau fichier jar
  4. ouvrir le fichier jar avec un utilitaire zip et supprimer les ressources existantes""
  5. ouvrir le fichier jar avec JDGui pour voir le code source
  6. 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
  7. supprimer cette classe du fichier jar (de sorte que vous n'avez pas la même classe définie plusieurs fois)
  8. lancez-le.
20
répondu Tom Hennen 2016-06-14 13:00:25

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.

16
répondu Ryan Berger 2010-08-29 04:02:46

il y a plusieurs façons de le faire:

  1. 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 .

    android-studio

    select-file

    code

  2. Utiliser jadx .

    jadx décompose le code dans un APK donné aux fichiers source java.

    jdax-img

  3. 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...
    
6
répondu 0xcaff 2017-08-11 03:27:00

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

6
répondu SKK 2017-08-24 12:40:29

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

5
répondu Franklin Hirata 2013-02-25 12:22:01

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)

4
répondu Kamil Kiełczewski 2017-08-24 12:40:49

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.

http://ibotpeaches.github.io/Apktool/

3
répondu Biswajit Karmakar 2016-05-15 08:21:25

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.

3
répondu M. Usman Khan 2017-09-11 06:20:23

personnellement, je recommande Afficher Java Application Android pour obtenir le code source. Vous pouvez le télécharger à partir de play store ou de ici

3
répondu Codelover 2017-12-30 11:39:36

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.

2
répondu Andrew Rukin 2017-07-11 05:51:03

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

2
répondu Lakshmikant Deshpande 2017-11-16 10:53:37