android - how - Existe-t-il un moyen d'obtenir le code source à partir d'un fichier APK?



dex2jar (11)

Le disque dur de mon ordinateur portable s'est écrasé et j'ai perdu tout le code source d'une application sur laquelle je travaillais depuis deux mois. Tout ce que j'ai, c'est le fichier APK qui est stocké dans mon email à partir de quand je l'ai envoyé à un ami.

Est-il possible d'extraire mon code source de ce fichier APK?


Answer #1

Au-dessous de l'outil ONLINE :

http://www.javadecompilers.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écompiler (jadx renvoie le code java dans les endroits / fonctions où les autres compilent des commentaires dans la fonction comme "incapable de décompiler" assembleur android / code machine)


Answer #2

Bien que vous puissiez décompiler votre fichier APK , vous risquez de rencontrer un gros problème:

ça ne va pas retourner le code que vous avez écrit. Il va plutôt retourner tout ce que le compilateur a mis en ligne, avec des variables données au hasard, ainsi que des fonctions ayant des noms aléatoires. Cela pourrait prendre beaucoup plus de temps pour essayer de le décompiler et de le restaurer dans le code que vous aviez que de le recommencer.

Malheureusement, des choses comme ça 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.


Answer #3

Ceci est une description alternative - juste au cas où quelqu'un serait coincé avec la description ci-dessus. Suis les étapes:

  1. Téléchargez apktool.bat (ou apktool pour Linux) et apktool_<version>.jar depuis http://ibotpeaches.github.io/Apktool/install/
  2. renommer le fichier jar d'en haut à apktool.jar et placer les deux fichiers dans le même dossier

  3. ouvrez une boîte DOS ( cmd.exe ) et passez dans ce dossier; vérifiez qu'un environnement Java est installé (pour Linux, vérifiez également les notes concernant les bibliothèques requises)
  4. Démarrer: apktool decode [apk file]

    Résultat intermédiaire : fichiers de ressources, AndroidManifest.xml

  5. décompressez le fichier APK avec un déballeur de votre choix

    Résultat intermédiaire : classes.dex

  6. téléchargez et extrayez 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=
  7. faites glisser et déposez classes.dex sur dex2jar.bat (ou entrez <path_to>\dex2jar.bat classes.dex dans une boîte DOS, pour Linux, utilisez dex2jar.sh )

    Résultat intermédiaire : classes_dex2jar.jar

  8. décompressez classes_dex2jar.jar (peut être facultatif en fonction du décompilateur 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 des paquets 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


Answer #4

Ces deux articles décrivent comment combiner l'utilisation de apktool et dex2jar pour prendre un fichier APK et créer un projet Eclipse pouvant le générer 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

Fondamentalement, vous:

  1. Utilisez apktool pour extraire les fichiers de ressources de l'apk
  2. Utilisez dex2jar pour obtenir un fichier jar contenant les classes dans un format qui plaira à Eclipse.
  3. Créer un projet Eclipse pointez sur les fichiers de ressources et le nouveau fichier jar
  4. Ouvrez le fichier jar avec un utilitaire zip et supprimez les ressources existantes
  5. Ouvrez le fichier jar avec JDGui pour afficher le code source
  6. Prenez le code source dont vous avez besoin de JDGui , collez-le dans une classe dans Eclipse et modifiez-le
  7. Supprimer cette classe du fichier jar (donc vous n'avez pas la même classe définie plusieurs fois)
  8. Exécuter.

Answer #5

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 d'afficher le code source directement sur votre smartphone. Il enregistre les fichiers sur votre carte SD afin que vous puissiez également les voir sur votre ordinateur. Il ne nécessite pas de racine ou autre chose.

Installez et amusez-vous. Je pense que c'est la façon la plus simple de décompiler une application.


Answer #6

Il y a quelques 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 des fichiers 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", "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 .

  2. Utilisez jadx .

    Jadx décompile le code d'un APK donné en fichiers source java.

  3. Utilisez apktool .

    Apktool est un outil de ligne de commande qui extrait les ressources et décompile le code en smali pour un apk donné. 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...
    

Answer #7

Personnellement, je recommande Show Java Android App pour obtenir le code source. Vous pouvez le télécharger à partir du magasin de jeu ou d' here



Answer #9

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 au format Smali au lieu de Java. D'autres fichiers tels que l'icône et le fichier main.xml sont tout à fait parfaits et il vaudra peut-être la peine de les récupérer. En fin de compte, vous aurez probablement besoin de 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éballer.


Answer #10

apktool est la meilleure chose que vous pouvez essayer. J'ai sauvé du xml avec, 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. Il vous donne des repos svn et git libres.


Answer #11

apktool est LE chemin à parcourir. Le service apktool en ligne existe aussi: http://www.javadecompilers.com/apktool

De toute évidence, certaines limitations existent en raison de la nature «en ligne» du service: vous pouvez extraire et rechercher des ressources et le fichier manifeste, mais il est impossible de recompiler l'application pour le moment.

Pourtant, c'est une façon sans tracas d '«ouvrir» l'application android.





apk