* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
En utilisant l'interface graphique, vous pouvez effectuer une **recherche de texte**, accéder aux **définitions de fonctions** (_CTRL + clic gauche_ sur la fonction) et aux références croisées (_clic droit_ --> _Rechercher l'utilisation_).
Si vous voulez **seulement** le **code Java** mais sans utiliser une interface graphique, une méthode très simple est d'utiliser l'outil de ligne de commande jadx :
GDA est également une plateforme d'analyse inverse puissante et rapide. Elle ne prend pas en charge uniquement les opérations de décompilation de base, mais également de nombreuses fonctions excellentes telles que la **détection de comportements malveillants, la détection de fuites de confidentialité, la détection de vulnérabilités, la résolution de chemin, l'identification de packer, l'analyse de suivi de variable, la désobfuscation, les scripts Python et Java, l'extraction de la mémoire de l'appareil, le chiffrement et le déchiffrement de données**, etc.
Un autre **outil intéressant pour effectuer une analyse statique est** : [**bytecode-viewer**](https://github.com/Konloch/bytecode-viewer/releases)**.** Il vous permet de décompiler l'APK en utilisant **plusieurs décompilateurs en même temps**. Ensuite, vous pouvez voir par exemple, 2 décompilateurs Java différents et un décompilateur Smali. Il vous permet également de **modifier** le code :
Enjarify est un outil de traduction du bytecode Dalvik en bytecode Java équivalent. Cela permet aux outils d'analyse Java d'analyser les applications Android.\
Dex2jar est un outil plus ancien qui tente également de traduire Dalvik en bytecode Java. Il fonctionne raisonnablement bien la plupart du temps, mais de nombreuses fonctionnalités obscures ou des cas limites le feront échouer ou même produire des résultats incorrects en silence. En revanche, Enjarify est conçu pour fonctionner dans le plus grand nombre de cas possible, même pour le code où Dex2jar échouerait. Entre autres choses, Enjarify gère correctement les noms de classe Unicode, les constantes utilisées comme plusieurs types, les conversions implicites, les gestionnaires d'exceptions sautant dans le flux de contrôle normal, les classes qui font référence à trop de constantes, les méthodes très longues, les gestionnaires d'exceptions après un gestionnaire catchall et les valeurs initiales statiques du mauvais type.
CFR décompilera les fonctionnalités Java modernes - [y compris une grande partie de Java ](https://www.benf.org/other/cfr/java9observations.html)[9](https://github.com/leibnitz27/cfr/blob/master/java9stringconcat.html), [12](https://www.benf.org/other/cfr/switch\_expressions.html) & [14](https://www.benf.org/other/cfr/java14instanceof\_pattern), mais est entièrement écrit en Java 6, donc fonctionnera partout ! ([FAQ](https://www.benf.org/other/cfr/faq.html)) - Il fera même un bon travail en transformant les fichiers de classe d'autres langages JVM en Java !
Pour les fichiers JAR plus volumineux, j'ai constaté que la mémoire était insuffisante. Vous pouvez simplement adapter la taille du pool d'allocation de mémoire du JVM si cela vous arrive également.
Ensuite, il y a [Fernflower](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine), qui fait partie de [IntelliJ IDEA](https://www.jetbrains.com/idea/). Tout le monde mentionne que c'est un décompilateur _analytique_ (comme indiqué dans leur description de projet), mais personne ne précise ce que cela signifie réellement. J'ai seulement trouvé [cette question Stackoverflow](https://stackoverflow.com/q/62298929), qui malheureusement reste sans réponse à ce jour.
Quoi qu'il en soit, comme il n'y a pas de versions autonomes, vous devez le construire vous-même. En tant que projet basé sur [Gradle](https://gradle.org), vous pouvez le cloner et exécuter la commande suivante, à condition que Gradle soit installé sur votre machine.
Ici, nous commençons par changer notre répertoire de travail vers le répertoire racine de Fernflower. Ensuite, nous demandons à Gradle de construire le fichier `./build/libs/fernflower.jar`.
Parmi les décompileurs décrits ici, c'est le seul qui génère les fichiers `.java` dans un fichier JAR. Vous pouvez facilement extraire les fichiers sources en utilisant `unzip`.
Vous vous souvenez d'Enjarify ci-dessus ? Le même auteur est également le développeur d'un décompileur nommé [Krakatau](https://github.com/Storyyeller/Krakatau).
> Ensuite, assurez-vous d'avoir des fichiers JAR contenant les définitions (sic!) de toutes les classes externes (c'est-à-dire les bibliothèques) qui pourraient être référencées par le JAR que vous essayez de décompiler. Cela inclut les classes de la bibliothèque standard (c'est-à-dire JRT).
Et selon la description, ces classes de bibliothèque standard sont fournies jusqu'à la version 8 de Java sous la forme du fichier `rt.jar`. Pour les versions ultérieures, l'auteur fournit [jrt-extractor](https://github.com/Storyyeller/jrt-extractor), qui peut générer ce fichier pour nous.
Je vais me référer au GitHub du projet pour une explication des paramètres. Notez simplement que pour toutes les bibliothèques utilisées par votre fichier JAR, Krakatau vous demandera de l'ajouter en tant que fichier JAR au drapeau `-path`.
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).