Question:
Décompilation de l'application Android
Mellowcandle
2013-03-20 14:02:41 UTC
view on stackexchange narkive permalink

Le code java Android est compilé dans le code octet Dalvik, qui est assez lisible. Je me demande, est-il possible en théorie et en pratique d'écrire un logiciel de décompilation pour le code octet Dalvik?

Six réponses:
#1
+35
Igor Skochinsky
2013-03-20 14:41:43 UTC
view on stackexchange narkive permalink

Ce n'est pas seulement possible, mais cela a déjà été fait, et pas une seule fois. En voici trois que je connais, et il y en aura peut-être plus.

  1. Kivlad par Cody Brocious

    http://www.matasano.com/research / kivlad /

  2. DAD by Zost (projet Androguard):

    http://code.google.com/p / androguard / wiki / Decompiler

  3. JEB par Nicolas Falliere (commercial)

    http: //www.android-decompiler .com /

Ensuite, il y a tous les décompilateurs Java qui peuvent être utilisés après avoir utilisé dex2jar ou Dare sur le binaire Dalvik.

En théorie, tous les décompilateurs Java fonctionnent ainsi que les fichiers de classe Dalvik peuvent être transformés (à nouveau) en fichiers de classe Java. En plus des liens ci-dessus, vous voudrez peut-être consulter [Soot] (http://www.bodden.de/2013/01/08/soot-android-instrumentation/) qui a récemment ajouté le support Dalvik.
#2
+6
Anton Kochkov
2013-03-20 14:26:35 UTC
view on stackexchange narkive permalink

Je pense que cela devrait être possible même avec les décompilateurs Java actuels, en corrigeant leur code. Ils ont au moins une grande différence - alors que JVM est basé sur la pile, Dalvik est basé sur les registres. Cette différence pourrait être gérée avec moins de code. Deuxième différence - format bytecode. Vous devez donc utiliser du code, qui est capable de démonter le format de bytecode Dalvik.

#3
+4
samuirai
2013-04-10 15:17:00 UTC
view on stackexchange narkive permalink

N'oubliez pas http://dexter.dexlabs.org/ - Dexter est un outil d'analyse d'applications Android statique.

#4
+2
JayXon
2015-01-25 03:06:29 UTC
view on stackexchange narkive permalink

jadx a à la fois CLI et GUI, et il est open source.

#5
+1
Nik NexAndrX
2015-02-23 15:35:19 UTC
view on stackexchange narkive permalink

Un autre outil est Bytecode Viewer :

https://github.com/Konloch/bytecode-viewer

Bytecode Viewer est un visualiseur de bytecode Java léger avancé, un décompilateur GUI Java, un éditeur de bytecode GUI, GUI Smali, GUI Baksmali, GUI APK Editor, GUI Dex Editor, GUI APK Decompiler, GUI DEX Decompiler, GUI Procyon Java Decompiler, GUI Krakatau , GUI CFR Java Decompiler, GUI FernFlower Java Decompiler, GUI DEX2Jar, GUI Jar2DEX, GUI Jar-Jar, Hex Viewer, Code Searcher, Debugger et plus encore. Il est entièrement écrit en Java et est open source. Il est actuellement maintenu et développé par Konloch.

Un exemple d'utilisation serait plus que bienvenu! :-)
#6
  0
user1677
2013-04-10 06:58:28 UTC
view on stackexchange narkive permalink

En plus des logiciels listés par Igor, il existe également des outils comme apktool qui peuvent être utilisés pour décompiler du code: il transforme le bytecode dalvik en smali, un langage spécifique à la machine virtuelle dalvik (voir instructions / opcodes ici par exemple).

Vous pouvez également éditer des ressources dans l'application, et reconstruire l'application (mais cela cassera la signature d'origine car vous devrez re -signez-le avec votre propre clé)

Désolé, mais ce que vous décrivez est un * désassemblage *, pas une décompilation. Smali est juste un moyen de représenter le bytecode Dalvik, ce n'est pas un langage de haut niveau comme Java.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...