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

1262

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?

Frank Bozzo
la source
28
FYI Il y a une vérification du décompilateur en ligne ici
edwin
11
Est-ce que cela signifie que nous pouvons obtenir le code source d'applications valant un million de dollars comme Whatsapp ou Facebook? Est-ce que tout est open source?
Faizan
3
@Faizan avez-vous entendu parler de proguard ??
Vishwajit Palankar
1
La formulation de la question contient des bribes d'histoire de vie non pertinentes et, en tant que telles, peut être interprétée comme recommandant un outil . Pourtant, la réponse aurait pu être potentiellement 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.
SwiftArchitect
2
dans cet article, ils expliquent comment ils procèdent à l'ingénierie inverse de Pokemon Go
anders

Réponses:

1569

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:

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

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

  1. Extrayez maintenant ce fichier .zip dans le même dossier (ou NOUVEAU DOSSIER).

  2. Téléchargez dex2jar et extrayez-le dans le même dossier (ou NOUVEAU DOSSIER).

  3. Déplacez le fichier classes.dex dans le dossier dex2jar.

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

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

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

  1. Mettez le fichier .apk que vous souhaitez décoder

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

  3. Ouvrez une fenêtre de commande

  4. Maintenant, exécutez la commande comme apktool if framework-res.apk(si vous ne l'avez pas, obtenez-la ici ) et ensuite

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

Prankul Garg
la source
26
@prankulgarg, Au point 5 de l'étape 3, j'obtiens l'erreur suivante: Impossible d'accéder au fichier jar E: \ apktojava \ testt \\ apktool.jar
55
Au lieu d'écrire dex2jar classes.dex dans cmd, essayez d2j-dex2jar classes.dex . Étant donné que dex2jar classes.dex, cette cmd est obsolète.
Umesh
23
Pour ceux qui ne trouvent pas framework-res.apk. Téléchargez-le d' ici
atulkhatri
12
Ceux qui n'ont pas trouvé d2j-dex2jar.sh, téléchargez dex2jar à partir d'ici: dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip
Reaz Murshed
14
Pour les personnes bloquées à l'étape 2: 4, téléchargez cette version et cela résoudra le problème: sourceforge.net/projects/dex2jar/files/dex2jar-2.0.zip/download qu'il a fait pour moi. @delive
siriuseteor77
126

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

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

  3. ouvrez une boîte de dos ( cmd.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)
  4. Début: apktool decode [apk file]

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

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

    Résultat intermédiaire :classes.dex

  6. téléchargez et extrayez dex2jar-0.0.9.15.zipde http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=
  7. glisser-déposer classes.dexsur dex2jar.bat(ou entrez <path_to>\dex2jar.bat classes.dexdans une boîte DOS; pour une utilisation Linux dex2jar.sh)

    Résultat intermédiaire :classes_dex2jar.jar

  8. décompresser classes_dex2jar.jar(peut être facultatif selon le décompilateur utilisé)
  9. décompiler vos fichiers de classe (par exemple avec JD-GUI ou DJ Decompiler )

    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

Trinimon
la source
6
Je pourrais également ajouter qu'il existe une alternative moderne à cette route APKTool-> dex2jar-> JD-GUI! Essayez simplement le décompilateur open source APK et DEX appelé Jadx: sourceforge.net/projects/jadx/files Il a également une version en ligne ici: javadecompilers.com/apk
Andrew Rukin
2
Il est autorisé (lire: légal) de décompiler tout fichier APK. Voir la question suivante: stackoverflow.com/questions/9674557/…
Rakete1111
1
Pourquoi ces fichiers de apktoolretour smali? Comment obtenir un javafichier?
rminaj
108

Bien que vous puissiez décompiler votre APKfichier, 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.

Ryan Gooler
la source
19
Un service comme Dropbox vous aidera également.
Jeremy Logan
1
et il y a toujours un moyen de graver des CD
JerryGoyal
52

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.

Cilenco
la source
1
Celui-ci est le plus simple.
Midhun Vijayakumar
@MidhunVijayakumar pourriez-vous être capable de convertir l'apk en code source en utilisant ceci?
Sajeev
28

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.

Macarse
la source
Vous trouverez apktool indispensable si vous souhaitez extraire des ressources (c'est-à-dire des images à partir d'une application Android. En fait, l'outil n'a pas de concurrents du tout!) Une version en ligne de l'apktool est disponible ici: www.javadecompilers.com/apktool
Andrew Rukin
23

Ces deux articles décrivent comment combiner l'utilisation apktoolet la dex2jarprise d'un APKfichier et créer un projet Eclipse qui peut 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 apktoolpour extraire les fichiers de ressources de l'apk
  2. Utilisez dex2jarpour obtenir un fichier jar qui contient les classes dans un format qui plaît à Eclipse.
  3. Créez un projet Eclipse, pointez-le 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 JDGuipour afficher le code source
  6. Prenez le code source dont vous avez besoin JDGui, collez-le dans une classe dans Eclipse et modifiez-le
  7. Supprimez cette classe du fichier jar (afin que vous n'ayez pas la même classe définie plusieurs fois)
  8. Exécuter.
Tom Hennen
la source
2
Je sais que cette question reçoit une réponse, je voudrais transmettre une information: il existe un décompilateur en ligne pour les apks Android decompileandroid.com Téléchargez l'apk depuis la machine locale, attendez quelques instants, téléchargez le code source au format zip.
Snehal Masne
2
Ça a l'air sympa. Et puis le site decompileandroid a également une copie de toute votre source! Intelligent!
DDSports
Une question, j'ai un apk décompilé mais dans jd gui je ne sais pas s'il y a les vraies classes de java, savez-vous si un apk est décompilé y a-t-il les vraies classes Java?
21

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.

Ryan Berger
la source
16

Il y a quelques façons de le faire:

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

    android-studio

    choisir le dossier

    code

  2. Utilisez jadx .

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

    jdax-img

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

    $ 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...
0xcaff
la source
J'ai essayé jadx, mais même avec helloworld simple, bien qu'il le décompile en java, Pourtant, essayer d'ouvrir le projet dans le studio Android et le recompiler sur apk, échoue pour de nombreuses raisons (fichiers de duplication, etc.). Existe-t-il une méthode qui crée java qui peut être compilée de nouveau pour apk?
ransh
1
@ransh J'utilise généralement jadx pour lire le code puis apktool pour modifier le code. apktool ne crée pas de java mais il permet de recompiler.
0xcaff
0xcaff, merci pour la clarification. qui ont du sens maintenant. Becuase essayant de compiler une java de décompilation dans Android Studio, ne fonctionnait pas.
ransh
16

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

SKK
la source
9
Il répertorie les classes et les méthodes mais ne fournit pas de code source.
WSS
Vous pouvez obtenir les fichiers ci-dessus uniquement en remplaçant ".apk" par ".zip"
M. Usman Khan
7

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

Franklin Hirata
la source
20
Que fournit cette réponse que les autres ne font pas?
Jørgen R
Vous n'avez pas vraiment besoin de le renommer en zip. Je pourrais ouvrir le fichier apk directement avec 7-zip.
miva2
7

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)

Kamil Kiełczewski
la source
oui, c'est super, mais au lieu des noms de fonction, il a changé tous les noms de fonctions en CS1001 et ainsi de suite. Alors, comment les reconnaître. et une chose de plus, pouvons-nous utiliser cette apk décompilée directement comme notre projet de studio Android, cela fonctionnera-t-il?
Zia Ur Rahman le
alors dans quel but nous utilisons pour décompiler certains apk, si nous ne pouvons pas utiliser leurs fonctionnalités dans nos applications.
Zia Ur Rahman le
@ZiaUrRahman Je ne sais pas. Cependant, dans mon cas, je décompile le code pour analyser l'algorithme. Vérifiez-vous que le code décompilé de cet outil peut être compilé par le studio Android de manière entièrement automatique - ou avez-vous besoin d'un "traitement humain"?
Kamil Kiełczewski
1
J'ai importé le projet décompilé dans le studio Android, mais pas de gradle là-bas et le projet a beaucoup de fichiers mais je n'ai pas compris jusqu'à ce que nous l'exécutions. Cela n'a tout simplement pas fonctionné. J'ai besoin de rendre le projet décompilé entièrement fonctionnel dans Android Studio, puis d'obtenir certaines fonctionnalités de base de certaines, puis de l'utiliser / de l'intégrer dans mon propre projet. Alors, comment y arriver?
Zia Ur Rahman le
6

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.

M. Usman Khan
la source
je ne pouvais pas retrouver mon code source java ... il semble quelque chose comme le fichier joint et ..
iman kazemayni
@imankazemayni dans le lien ci-dessus, "naviguez" vers votre fichier APK et cliquez sur "Décompiler votre APK". Cela prendra un certain temps, puis il devrait vous donner le code source, si le code n'est pas crypté.
M. Usman Khan
savez-vous quel est l'impact multidex sur le chiffrement?
iman kazemayni
6

Je recommande personnellement Show Java Android App pour obtenir le code source. Vous pouvez le télécharger depuis Play Store ou d' ici

Codelover
la source
La plupart des compilateurs en ligne ne fonctionnent pas, mais cette application fonctionne. Merci
Sunil
4

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/

Biswajit Karmakar
la source
3

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.

Andrew Rukin
la source
3

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

Lakshmikant Deshpande
la source
Bonjour Comment utiliser DexPatcher avec Android Studio?
ravi152
Je ne peux pas tout expliquer dans les commentaires. Google est votre ami :) Il existe également de jolis tutoriels YouTube.
Lakshmikant Deshpande
2

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:

uploadapk file + click Run+ wait some time + click Downloadto 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-guiconvertir apkenjava sourcecode

téléchargez jadx-0.9.0.zip puis décompressez pour obtenir bin/jadx, puis:

  • mode ligne de commande:
    • en exécution de terminal: jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
    • dossier_sortie affichera décodé sourcesetresources
      • sources/com/{yourCompanyName}/{yourProjectName} est votre attente java sourcecode
  • Mode GUI
    • double-cliquez pour exécuter jadx-0.9.0/bin/jadx-gui(Linux jadx-gui.sh/ Windows jadx-gui.bat)
    • ouvrir le apkfichier
    • il décodera automatiquement -> voir votre code source Java attendu
    • save all ou save as Gradle project

par exemple:

Condition2: durcir (par Tencent Legu / Qihoo 360 / ...)

la principale méthode de 3 steps:

  1. apk/app to dex
  2. dex to jar
  3. 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) dexfile from running app

pas:

préparer l'environnement

vidage dexde l'application en cours d'exécution

  • exécuter FDex2puis cliquez sur votre nom apk pour permettre plus tard de capturer / déconnecter dex

  • (dans le téléphone / l'émulateur) exécutez votre application
  • trouver et copier le vidage des ressources apk entières dans /data/data/com/yourCompanyName/yourProjectName
    • dans son dossier racine trouvera normalement plusieurs dexfichiers

Étape 2: dex to jar

utiliser l'outil ( dex2jar) convertir le dexfichier (spécifique, contenant la logique de l'application) en jarfichier

téléchargez dex2jar got dex-tools-2.1-SNAPSHOT.zip , dézippez got 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

Étape 3: jar to java src

utilisez l'un des outils:

convertir jarenjava src

pour un effet de conversion jar en java src:

Jadx> Procyon> CRF>>JD-GUI

alors recommande l'utilisation: Jadx/jadx-gui

pas:

  • double-cliquez pour exécuter jadx-gui
  • ouvrir le dexfichier
  • File -> save all

par exemple:

java src exporté:


Une explication plus détaillée peut voir mon tutoriel ebook chinois en ligne :

crifan
la source
2

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

Rohit Patil
la source
1

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

  • Toutes les fonctionnalités sont intégrées dans le menu contextuel de Windows.
  • Décompilez les classes APK en codes source Java.
  • Démontez l'APK pour smali code et décode ses ressources.
  • Installez l'APK sur le téléphone par un clic droit.
  • Recompilez l'APK après avoir modifié le code et / ou les ressources smali. Pendant la recompilation:
  • Optimiser les images png
  • Signe apks
  • Zipalign

EXIGENCES

Java Runtime Environment (JRE) doit être installé.

Vous pouvez le télécharger à partir de ce lien Apk OneClick Decompiler

Profitez-en.

Masoud Mokhtari
la source
1

J'ai trouvé ce qui suit comme la méthode la plus simple:

  1. Renommez votre app.apk en app.zip (changez l'extension d'apk en zip)
  2. Extraire le fichier zip dans un dossier
  3. Utilisez l' outil JADX pour lire le code source, présent dans le fichier classes.dex.
Masood Anwar
la source
1

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

  1. Sélectionnez Applications, sous "Applications installées", sélectionnez votre application. S'il n'est pas là, vous pouvez charger l'APK.
  2. Sélectionnez "Extraire APK"
  3. Sélectionnez "Déballer l'APK"
  4. Sélectionnez "Décompiler avec Jadx". Cela peut prendre quelques secondes ou quelques minutes selon la vitesse de votre appareil

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.

MobileMateo
la source
0

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:

# i installed apktool before the rest of the stuff, may not need it but here it is
$> cd /opt
$> sudo mkdir apktool
$> cd apktool/
$> sudo wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
$> sudo wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
$> sudo mv apktool_2.4.1.jar apktool.jar
$> sudo mv apktool* /usr/bin/
$> sudo chmod a+x /usr/bin/apktool*

# and enjarify
$> cd /opt
$> sudo git clone https://github.com/Storyyeller/enjarify.git
$> cd enjarify/
$> sudo ln -s /opt/enjarify/enjarify.sh /usr/bin/enjarify

# and finally jd-gui
$> cd /opt
$> sudo git clone https://github.com/java-decompiler/jd-gui.git
$> cd jd-gui/
$> sudo ./gradlew build

# I made an alias to kick of the jd-gui with short commandline rather than long java -jar blahblahblah :)
$> echo "jd-gui='java -jar /opt/jd-gui/build/launch4j/lib/jd-gui-1.6.6.jar'" >> ~/.bashrc

Maintenant, on devrait être capable de ruminer ce qui suit pour obtenir des fichiers de classe:

$> enjarify yourapkfile.apk

Et pour démarrer jd-gui:

$> jd-gui

Ensuite, ouvrez simplement vos fichiers de classe!

RJ Cole
la source
0

J'ai développé un Outil - Analyseur de Code, il fonctionne sur iPhone / iPad / Mac, pour analyser les fichiers Java / Android, https://decompile.io

entrez la description de l'image ici

entrez la description de l'image ici

Qing Xu
la source
0

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

Faxriddin Abdullayev
la source