web-dev-qa-db-fra.com

Reverse engineering d'un fichier APK à un projet

J'ai accidentellement effacé mon projet de Eclipse et il ne me reste que le fichier APK que j'ai transféré sur mon téléphone. Existe-t-il un moyen d’inverser le processus d’exportation d’une application vers le fichier .apk afin que je puisse récupérer mon projet?

200
Marko Cakic

Il existe deux outils utiles pour générer du code Java (brut mais suffisant) à partir d'un fichier APK inconnu.

  1. Téléchargez l'outil dex2jar depuis dex2jar .
  2. Utilisez l'outil pour convertir le fichier APK en JAR :

    $ d2j-dex2jar.bat demo.apk
    dex2jar demo.apk -> ./demo-dex2jar.jar
    
  3. Une fois le fichier JAR généré, utilisez JD-GUI pour ouvrir le fichier JAR. Vous verrez les fichiers Java.

La sortie sera similaire à:

 JD GUI

256
rahul

Tout d’abord, je recommande this video, cela efface tous vos doutes 

Si non s'il vous plaît passez par là 

Procedure for decoding .apk files, step-by-step method:

Step 1:

Créez un nouveau dossier et placez-y le fichier .apk (que vous souhaitez décoder). Maintenant, renommez l’extension de ce fichier .apk en .Zip (par exemple: renommez à partir de filename.apk en filename.Zip) et enregistrez-le.

Si vous rencontrez des problèmes lors de la conversion en .Zip, veuillez consulter link

Après avoir obtenu le fichier .Zip, vous obtenez maintenant les fichiers classes.dex, etc. À ce stade, vous êtes en mesure de voir les fichiers dessinés, mais pas les fichiers xml et Java, continuez alors ... .. Si vous ne voyez pas les extensions passer, vérifiez la configuration. 

Step 2:

Maintenant, extrayez ce fichier apk Zip dans le même dossier. Téléchargez maintenant dex2jar à partir de cette link

et extrayez-le dans le même dossier. Ouvrez maintenant l'invite de commande et changez de répertoire dans ce dossier. 

Puis écrivez dex2jar classes.dex et appuyez sur entrée. Maintenant, vous obtenez le fichier classes.dex.dex2jar dans le même dossier.

Puis téléchargez Java decompiler

Et maintenant, double-cliquez sur jd-gui et cliquez sur le fichier ouvert. Ensuite, ouvrez le fichier classes.dex.dex2jar à partir de ce dossier. Maintenant, vous obtenez des fichiers de classe et enregistrez tous ces fichiers de classe (cliquez sur fichier, puis cliquez sur "Enregistrer toutes les sources" dans jd-gui) par nom de src. Extrayez ce fichier ZIP (classes_dex2jar.src.Zip) et vous obtiendrez tous les fichiers Java de l’application.

A ce stade, vous avez le code source Java mais les fichiers XML sont toujours illisibles, continuez.

Step 3:

Maintenant, ouvrez un autre nouveau dossier et mettez ces fichiers

  1. mettre le fichier .apk que vous voulez décoder

  2. téléchargez Apktool pour windows v1.x And Apktool

installer la fenêtre en utilisant google et mettre dans le même dossier

  1. télécharger le fichier framework-res.apk à l'aide de Google et le placer dans le même dossier (tous les fichiers apk n'ont pas besoin du fichier framework-res.apk)

  2. Ouvrir une fenêtre de commande

  3. Accédez au répertoire racine de APKtool et tapez la commande suivante: apktool if framework-res.apk.

La commande ci-dessus devrait donner Framework installed ....

  1. apktool d "appName" .apk ("appName" désigne une application que vous souhaitez décoder). Désormais, vous obtenez un dossier de fichiers dans ce dossier et vous pouvez maintenant facilement lire les fichiers XML.

Step 4: Enfin, nous avons obtenu le res/ ainsi que le code Java du projet qui est notre cible au démarrage. 

P.S. Si vous ne parvenez pas à obtenir le dossier de res par les étapes ci-dessus, veuillez installer le nouveau apktool

  • Java 1.7 est-il installé? Installer Apktool 2.x
  • Java 1.6 ou supérieur est-il installé? Installer Apktool 1.x

Enjoy and happy coding

72
Swapnil Sonar

Pas de logiciel et pas trop d'étapes ..

Il suffit de télécharger votre APK et de récupérer toutes vos ressources sur ce site.

https://www.apkdecompilers.com/

Ce site Web décompilera le code incorporé dans les fichiers APK et extraira tous les autres actifs du fichier.

note: je décompile mon fichier APK et récupère le code en une minute à partir de ce site Web

Mise à jour 1:

J'ai trouvé un autre site de décompilation en ligne,

http://www.javadecompilers.com/apk/ - Ne fonctionne pas en permanence, demande le blocage de popups 

Mise à jour 2:

J'ai trouvé l'application de décompilation apk dans le Play Store,

https://play.google.com/store/apps/details?id=com.njlabs.showjava

Nous pouvons décompiler les fichiers apk sur notre téléphone Android. et aussi nous pouvons voir les fichiers Java et XML dans cette application

Mise à jour 3:

Nous pouvons utiliser une autre option Analyse APK de la version Android Studio 2.2

Construire -> Analyser APK -> Sélectionnez votre APK -> il donne des résultats 

 enter image description here

50
Ranjith Kumar

Il y a une nouvelle façon de faire cela.

Android Studio 2.2 a APK Analyzer il donnera beaucoup d'informations sur apk, cliquez ici: - http://Android-developers.blogspot.in/2016/05/Android-studio-22-preview-new-ui. html

 Ap

5
Brijesh Masrani

Pas vraiment. Il existe un certain nombre de suites de désassembleur/décompilateur de DX telles que smali ou dex2jar qui généreront une sortie semi-lisible (dans le cas de dex2jar, vous pouvez obtenir du code Java en utilisant quelque chose comme JD-GUI mais le processus n’est pas parfait et il est très peu probable que vous puissiez recréer votre code source à 100%, mais cela pourrait vous donner un endroit pour commencer à reconstruire votre arborescence.

4
Chris Thompson

Oui, vous pouvez récupérer votre projet. Il suffit de renommer le fichier yourproject.apk en yourproject.Zip et vous obtiendrez tous les fichiers contenus dans ce fichier Zip. Nous modifions l'extension de fichier de .apk à .Zip. A partir de ce fichier Zip, extrayez le fichier classes.dex et décompilez-le de la manière suivante.

Tout d'abord, vous avez besoin d'un outil pour extraire toutes les classes (compilées) sur DEX dans un fichier JAR. Il en existe un appelé dex2jar , qui est fabriqué par un étudiant chinois.

Ensuite, vous pouvez utiliser JD-GUI pour décompiler les classes du JAR en code source. Le code source résultant devrait être assez lisible, car dex2jar applique certaines optimisations.

3
Star

Suivez les étapes ci-dessous pour le faire ou utilisez simplement apkToJava gem pour ce processus, il se charge même d’installer les outils nécessaires à son fonctionnement.

  • convertir un fichier apk en Zip
  • décompressez le fichier
  • en extraire classes.dex
  • utiliser dex en jar pour convertir classes.dex en fichier jar
  • utilisez jadx gui pour ouvrir le fichier jar en tant que code source Java
2
Ajit Singh

Pour la plate-forme Android, vous pouvez essayer ShowJava , disponible sur le Play Store.

Vous pouvez consulter le code généré via l'interface de l'application. Les fichiers Java générés et la structure des dossiers sont stockés dans le dossier ShowJava dans /sdcard, à côté du fichier .jar résultant de la conversion.

L'application est gratuite avec une bannière publicitaire au bas de la vue principale, mais il existe une option d'achat intégrée (3,99 $) pour la supprimer. L'achat intégré n'ajoute aucune fonctionnalité à côté de la suppression de la bannière publicitaire. 

Divulgation: Je ne suis pas le développeur de l'application, ni je suis affilié à lui en aucune façon. 

1
Stephane Piriou

Vous trouverez ci-dessous certains des outils que vous pouvez utiliser pour effectuer du reverse engineering à partir d'un fichier APK en code source:

  1. Dex2jar
  2. Décompilateur Java
  3. Apktool
  4. Apk Analyzer
0
Mandeep Yadav

Si vous recherchez une alternative professionnelle, consultez JEB Decompiler de PNF Software.

Il existe une version de démonstration qui vous permettra de décompiler la plupart du code.

0
Nick