* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Consigue el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Usando la interfaz gráfica de usuario puedes realizar una **búsqueda de texto**, ir a las **definiciones de funciones** (_CTRL + clic izquierdo_ en la función) y referencias cruzadas (_clic derecho_ --> _Buscar uso_)
GDA es también una plataforma de análisis inverso rápida y poderosa. No solo admite la operación básica de descompilación, sino también muchas funciones excelentes como **detección de comportamiento malicioso, detección de fugas de privacidad, detección de vulnerabilidades, resolución de rutas, identificación de empaquetadores, análisis de seguimiento de variables, desofuscación, scripts de Python y Java, extracción de memoria del dispositivo, cifrado y descifrado de datos**, etc.
Otra **herramienta interesante para realizar un análisis estático es**: [**bytecode-viewer**](https://github.com/Konloch/bytecode-viewer/releases)**.** Te permite descompilar el APK usando **varios descompiladores al mismo tiempo**. Luego, puedes ver, por ejemplo, 2 descompiladores de Java diferentes y un descompilador de Smali. También te permite **modificar** el código:
Enjarify es una herramienta para traducir el bytecode de Dalvik al bytecode de Java equivalente. Esto permite que las herramientas de análisis de Java analicen aplicaciones de Android.\
Dex2jar es una herramienta más antigua que también intenta traducir Dalvik al bytecode de Java. Funciona razonablemente bien la mayor parte del tiempo, pero muchas características oscuras o casos extremos harán que falle o incluso produzca resultados incorrectos en silencio. En cambio, Enjarify está diseñado para funcionar en tantos casos como sea posible, incluso para el código donde Dex2jar fallaría. Entre otras cosas, Enjarify maneja correctamente los nombres de clase Unicode, las constantes utilizadas como múltiples tipos, las conversiones implícitas, los manejadores de excepciones que saltan al flujo de control normal, las clases que hacen referencia a demasiadas constantes, los métodos muy largos, los manejadores de excepciones después de un manejador de captura todo y los valores iniciales estáticos del tipo incorrecto.
CFR descompilará las características modernas de Java, [incluyendo gran parte 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) y [14](https://www.benf.org/other/cfr/java14instanceof\_pattern), pero está escrito completamente en Java 6, ¡así que funcionará en cualquier lugar! ([FAQ](https://www.benf.org/other/cfr/faq.html)) - ¡Incluso hará un buen trabajo convirtiendo archivos de clase de otros lenguajes JVM de vuelta a Java!
Para archivos JAR más grandes, encontré que se quedaba sin memoria. Si eso también te sucede, simplemente puedes adaptar el tamaño del pool de asignación de memoria de la JVM.
A continuación, tenemos [Fernflower](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine), que forma parte de [IntelliJ IDEA](https://www.jetbrains.com/idea/). Todo el mundo menciona que es un descompilador _analítico_ (como se indica en su descripción del proyecto), pero nadie señala lo que esto realmente significa. Solo encontré [esta pregunta de Stackoverflow](https://stackoverflow.com/q/62298929), que lamentablemente sigue sin respuesta hasta hoy.
De todos modos, como no hay versiones autocontenidas, necesitas construirlo tú mismo. Como proyecto basado en [Gradle](https://gradle.org), puedes clonarlo y luego ejecutar el siguiente comando siempre y cuando Gradle esté instalado en tu máquina.
Aquí, primero cambiamos nuestro directorio de trabajo al directorio raíz de Fernflower. Luego, instruimos a Gradle para que construya el archivo `./build/libs/fernflower.jar`.
Entre los descompiladores descritos aquí, este es el único que genera archivos `.java` en un archivo JAR. Puedes extraer fácilmente los archivos fuente usando `unzip`.
¿Recuerdas Enjarify de arriba? El mismo autor es también el desarrollador de un descompilador llamado [Krakatau](https://github.com/Storyyeller/Krakatau).
> A continuación, asegúrate de tener archivos JAR que contengan definiciones para cualquier clase externa (es decir, bibliotecas) que pueda ser referenciada por el archivo JAR que estás intentando descompilar. Esto incluye las clases de la biblioteca estándar (es decir, JRT).
Y según la descripción, estas clases de biblioteca estándar vienen con la versión 8 de Java en forma del archivo `rt.jar`. Para versiones posteriores, el autor proporciona [jrt-extractor](https://github.com/Storyyeller/jrt-extractor), que puede generar este archivo para nosotros.
Permíteme referirme al GitHub del proyecto para una explicación de los parámetros. Solo ten en cuenta que para cualquier biblioteca utilizada por tu archivo JAR, Krakatau requerirá que la agregues como un archivo JAR en la bandera `-path`.
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en****Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).