Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
jadx — Herramienta de línea de comandos y GUI para descompilar archivos Android Dex y APK en código fuente Java legible, con capacidades de decodificación de recursos, desofuscación y depuración de Smali. | Kitploit
Herramientas/GitHubGitHub/skylot/jadx
Seguridad AndroidAnálisis EstáticoIngeniería InversaDepuradoresAnálisis de Binarios
GitHubskylot/jadx

jadx

Herramienta de línea de comandos y GUI para descompilar archivos Android Dex y APK en código fuente Java legible, con capacidades de decodificación de recursos, desofuscación y depuración de Smali.

Ver Repositorio
50.0k5.7khace 15h 41mRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

JADX

Estado de compilación Contribuyentes de GitHub Todos los lanzamientos de GitHub Lanzamiento de GitHub (último por SemVer) Último lanzamiento Maven Central Java 11+ Licencia

jadx - Descompilador de Dex a Java

Herramientas de línea de comandos y GUI para generar código fuente Java a partir de archivos Android Dex y Apk

[!WARNING] Tenga en cuenta que en la mayoría de los casos jadx no puede descompilar el 100% del código, por lo que se producirán errores.
Consulte la Guía de solución de problemas para soluciones alternativas.

Características principales:

  • Descomprimir bytecode Dalvik a código Java desde archivos APK, dex, aar, aab y zip
  • Decodificar AndroidManifest.xml y otros recursos de resources.arsc
  • Desofuscador incluido

Características de jadx-gui:

  • Ver código descompilado con sintaxis resaltada
  • Saltar a la declaración
  • Buscar usos
  • Búsqueda de texto completo
  • Depurador smali, consulte la página wiki para su configuración y uso

Los atajos de teclado de Jadx-gui se pueden encontrar aquí

Vea estas características en acción aquí: Resumen de características de jadx-gui

Descargar

  • Versión estable desde github: Último lanzamiento
  • Última compilación inestable Commits de GitHub desde la versión etiquetada (rama)

Después de descargar, descomprima el archivo zip, vaya al directorio bin y ejecute:

  • jadx - versión de línea de comandos
  • jadx-gui - versión de interfaz gráfica

En Windows, ejecute los archivos .bat con doble clic
Nota: asegúrese de haber instalado Java 11 o una versión posterior de 64 bits. Para Windows, puede descargarlo desde oracle.com (seleccione el instalador x64).

Instalar

  • Arch Linux Paquete de Arch Linux Versión AUR
    root@kitploit:~
    sudo pacman -S jadx
    
  • macOS Versión de Homebrew
    root@kitploit:~
    brew install jadx
    
  • Flathub Versión de Flathub
    root@kitploit:~
    flatpak install flathub com.github.skylot.jadx
    

Usar jadx como biblioteca

Puede usar jadx en sus proyectos Java, consulte los detalles en la página wiki

Compilar desde el código fuente

JDK 17 o superior debe estar instalado:

root@kitploit:~
git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist

(en Windows, use gradlew.bat en lugar de ./gradlew)

Los scripts para ejecutar jadx se colocarán en build/jadx/bin y también se empaquetarán en build/jadx-<version>.zip

Uso

root@kitploit:~
jadx[-gui] [command] [options] <input files> (.apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc, .aab, .xapk, .apkm, .jadx.kts)
comandos (use '<command> --help' para las opciones del comando):
  plugins	  - gestionar plugins de jadx

options:
  -d, --output-dir                              - directorio de salida
  -ds, --output-dir-src                         - directorio de salida para fuentes
  -dr, --output-dir-res                         - directorio de salida para recursos
  -r, --no-res                                  - no decodificar recursos
  -s, --no-src                                  - no descompilar código fuente
  -j, --threads-count                           - cantidad de hilos de procesamiento, valor predeterminado: 16
  --single-class                                - descompilar una sola clase, nombre completo, raw o alias
  --single-class-output                         - archivo o directorio para escribir si se descompila una sola clase
  --output-format                               - puede ser 'java' o 'json', valor predeterminado: java
  -e, --export-gradle                           - guardar como proyecto gradle (configurar '--export-gradle-type' a 'auto')
  --export-gradle-type                          - plantilla de proyecto Gradle para exportación:
                                                   'auto' - detectar automáticamente
                                                   'android-app' - Aplicación Android (apk)
                                                   'android-library' - Biblioteca Android (aar)
                                                   'simple-java' - Java simple
  -m, --decompilation-mode                      - modo de salida de código:
                                                   'auto' - intentar mejores opciones (predeterminado)
                                                   'restructure' - restaurar estructura de código (código Java normal)
                                                   'simple' - instrucciones simplificadas (lineal, con goto)
                                                   'fallback' - instrucciones sin modificar
  --show-bad-code                               - mostrar código inconsistente (descompilado incorrectamente)
  --no-xml-pretty-print                         - no embellecer XML
  --no-imports                                  - deshabilitar uso de importaciones, escribir siempre el nombre completo del paquete
  --no-debug-info                               - deshabilitar análisis y procesamiento de información de depuración
  --add-debug-lines                             - agregar comentarios con números de línea de depuración si están disponibles
  --no-inline-anonymous                         - deshabilitar inserción de clases anónimas
  --no-inline-methods                           - deshabilitar inserción de métodos
  --no-move-inner-classes                       - deshabilitar mover clases internas al padre
  --no-inline-kotlin-lambda                     - deshabilitar inserción de lambdas Kotlin
  --no-finally                                  - no extraer bloque finally
  --no-restore-switch-over-string               - no restaurar switch sobre cadena
  --no-replace-consts                           - no reemplazar valor constante con campo constante coincidente
  --escape-unicode                              - escapar caracteres no latinos en cadenas (con \u)
  --respect-bytecode-access-modifiers           - no cambiar modificadores de acceso originales
  --mappings-path                               - archivo o directorio de mapeo de desofuscación. Formatos permitidos: Tiny y Tiny v2 (ambos '.tiny'), Enigma (.mapping) o directorio Enigma
  --mappings-mode                               - establecer modo para manejar el archivo de mapeo de desofuscación:
                                                   'read' - solo leer, el usuario siempre puede guardar manualmente (predeterminado)
                                                   'read-and-autosave-every-change' - leer y guardar automáticamente después de cada cambio
                                                   'read-and-autosave-before-closing' - leer y guardar automáticamente antes de salir de la aplicación o cerrar el proyecto
                                                   'ignore' - no leer ni guardar (se puede usar para omitir la carga de archivos de mapeo referenciados en el archivo del proyecto)
  --deobf                                       - activar desofuscación
  --deobf-min                                   - longitud mínima de nombre, renombrado si es más corto, valor predeterminado: 3
  --deobf-max                                   - longitud máxima de nombre, renombrado si es más largo, valor predeterminado: 64
  --deobf-whitelist                             - lista separada por espacios de clases (nombre completo) y paquetes (terminan con '.*') a excluir de la desofuscación, valor predeterminado: android.support.v4.* android.support.v7.* android.support.v4.os.* android.support.annotation.Px androidx.core.os.* androidx.annotation.Px
  --deobf-cfg-file                              - archivo de mapeo de desofuscación utilizado para nombres generados automáticamente por JADX (en formato JOBF), valor predeterminado: mismo directorio y nombre que el archivo de entrada con extensión '.jobf'
  --deobf-cfg-file-mode                         - establecer modo para manejar el archivo de mapa de desofuscación de nombres generados automáticamente por JADX:
                                                   'read' - leer si se encuentra, no guardar (predeterminado)
                                                   'read-or-save' - leer si se encuentra, guardar en caso contrario (no sobrescribir)
                                                   'overwrite' - no leer, siempre guardar
                                                   'ignore' - no leer ni guardar
  --deobf-res-name-source                       - mejor fuente de nombre para recursos:
                                                   'auto' - seleccionar automáticamente el mejor nombre (predeterminado)
                                                   'resources' - usar nombres de recursos
                                                   'code' - usar nombres de campos de clase R
  --use-source-name-as-class-name-alias         - usar nombre fuente como alias de nombre de clase:
                                                   'always' - usar siempre el nombre fuente si está disponible
                                                   'if-better' - usar nombre fuente si parece mejor que el actual
                                                   'never' - nunca usar nombre fuente, incluso si está disponible
  --source-name-repeat-limit                    - permitir usar nombre fuente si aparece menos de un número límite, valor predeterminado: 10
  --use-kotlin-methods-for-var-names            - usar métodos intrínsecos de Kotlin para renombrar variables, valores: disable, apply, apply-and-hide, valor predeterminado: apply
  --use-headers-for-detect-resource-extensions  - Usar cabeceras para detectar extensiones de recursos si el recurso está ofuscado
  --rename-flags                                - opciones de corrección (lista separada por comas de):
                                                   'case' - corregir problemas de sensibilidad de mayúsculas/minúsculas (según la opción --fs-case-sensitive),
                                                   'valid' - renombrar identificadores Java para que sean válidos,
                                                   'printable' - eliminar caracteres no imprimibles de identificadores,
                                                  o único 'none' - para deshabilitar todos los renombramientos
                                                  o único 'all' - para habilitar todos (predeterminado)
  --integer-format                              - cómo se muestran los enteros:
                                                   'auto' - seleccionar automáticamente (predeterminado)
                                                   'decimal' - usar decimal
                                                   'hexadecimal' - usar hexadecimal
  --type-update-limit                           - límite de actualización de tipo (por instrucción), valor predeterminado: 10
  --fs-case-sensitive                           - tratar el sistema de archivos como sensible a mayúsculas/minúsculas, falso por defecto
  --cfg                                         - guardar gráfico de flujo de control de métodos en archivo dot
  --raw-cfg                                     - guardar gráfico de flujo de control de métodos (usar instrucciones sin procesar)
  --call-graph                                  - guardar gráfico de llamadas de la aplicación en formato: 'dot' o 'json', valor predeterminado: none
  -f, --fallback                                - establecer '--decompilation-mode' a 'fallback' (obsoleto)
  --use-dx                                      - usar dx/d8 para convertir bytecode Java
  --comments-level                              - establecer nivel de comentarios de código, valores: error, warn, info, debug, user-only, none, valor predeterminado: info
  --log-level                                   - establecer nivel de registro, valores: quiet, progress, error, warn, info, debug, valor predeterminado: progress
  -v, --verbose                                 - salida detallada (establecer --log-level a DEBUG)
  -q, --quiet                                   - desactivar salida (establecer --log-level a QUIET)
  --disable-plugins                             - lista separada por comas de ids de plugins a deshabilitar
  --config <config-ref>                         - cargar configuración desde archivo, <config-ref> puede ser:
                                                   ruta a archivo '.json'
                                                   nombre corto - usa archivo con este nombre desde el directorio de configuración
                                                   'none' - para deshabilitar carga de configuración
  --save-config <config-ref>                    - guardar opciones actuales en archivo de configuración y salir, <config-ref> puede ser:
                                                   vacío - para configuración predeterminada
                                                   ruta a archivo '.json'
                                                   nombre corto - el archivo se guardará en el directorio de configuración
  --print-files                                 - imprimir archivos y directorios usados por jadx (config, cache, temp)
  --version                                     - imprimir versión de jadx
  -h, --help                                    - imprimir esta ayuda

Opciones de plugin (-P<nombre>=<valor>):
  dex-input: Cargar archivos .dex y .apk
    - dex-input.verify-checksum                 - verificar checksum del archivo dex antes de cargar, valores: [yes, no], valor predeterminado: yes
  java-convert: Convertir archivos .class, .jar y .aar a dex
    - java-convert.mode                         - modo de conversión, valores: [dx, d8, both], valor predeterminado: both
    - java-convert.d8-desugar                   - usar desugar en d8, valores: [yes, no], valor predeterminado: no
  kotlin-metadata: Usar anotación kotlin.Metadata para generación de código
    - kotlin-metadata.class-alias               - renombrar alias de clase, valores: [yes, no], valor predeterminado: yes
    - kotlin-metadata.method-args               - renombrar argumentos de función, valores: [yes, no], valor predeterminado: yes
    - kotlin-metadata.fields                    - renombrar campos, valores: [yes, no], valor predeterminado: yes
    - kotlin-metadata.companion                 - renombrar objeto companion, valores: [yes, no], valor predeterminado: yes
    - kotlin-metadata.data-class                - agregar modificador de clase de datos, valores: [yes, no], valor predeterminado: yes
    - kotlin-metadata.to-string                 - renombrar campos usando toString, valores: [yes, no], valor predeterminado: yes
    - kotlin-metadata.getters                   - renombrar getters simples a nombres de campo, valores: [yes, no], valor predeterminado: yes
  kotlin-smap: Usar anotación kotlin.SourceDebugExtension para renombrar alias de clase
    - kotlin-smap.class-alias-source-dbg        - renombrar alias de clase desde SourceDebugExtension, valores: [yes, no], valor predeterminado: no
  rename-mappings: soporte de varios mapeos
    - rename-mappings.format                    - formato de mapeo, valores: [AUTO, TINY_FILE, TINY_2_FILE, ENIGMA_FILE, ENIGMA_DIR, PROGUARD_FILE, SRG_FILE, XSRG_FILE, JAM_FILE, CSRG_FILE, TSRG_FILE, TSRG_2_FILE, INTELLIJ_MIGRATION_MAP_FILE, RECAF_SIMPLE_FILE, JOBF_FILE], valor predeterminado: AUTO
    - rename-mappings.invert                    - invertir mapeo al cargar, valores: [yes, no], valor predeterminado: no
  smali-input: Cargar archivos .smali
    - smali-input.api-level                     - nivel de API de Android, valor predeterminado: 27

Variables de entorno:
  JADX_DISABLE_XML_SECURITY - establecer a 'true' para deshabilitar todas las comprobaciones de seguridad para archivos XML
  JADX_DISABLE_ZIP_SECURITY - establecer a 'true' para deshabilitar todas las comprobaciones de seguridad para archivos zip
  JADX_ZIP_MAX_ENTRIES_COUNT - número máximo permitido de entradas en archivos zip (predeterminado: 100 000)
  JADX_CONFIG_DIR - directorio de configuración personalizado, usando el del sistema por defecto
  JADX_CACHE_DIR - directorio de caché personalizado, usando el del sistema por defecto
  JADX_TMP_DIR - directorio temporal personalizado, usando el del sistema por defecto

Ejemplos:
  jadx -d out classes.dex
  jadx --rename-flags "none" classes.dex
  jadx --rename-flags "valid, printable" classes.dex
  jadx --log-level ERROR app.apk
  jadx -Pdex-input.verify-checksum=no app.apk

Estas opciones también funcionan en jadx-gui desde la línea de comandos y anulan las opciones del diálogo de preferencias

Uso del comando plugins

root@kitploit:~
usage: plugins [options]
options:
  -i, --install <locationId>      - instalar plugin con locationId
  -j, --install-jar <path-to.jar> - instalar plugin desde archivo jar
  -l, --list                      - listar plugins instalados
  -a, --available                 - listar plugins disponibles desde jadx-plugins-list (también conocido como marketplace)
  -u, --update                    - actualizar plugins instalados
  --uninstall <pluginId>          - desinstalar plugin con pluginId
  --disable <pluginId>            - deshabilitar plugin con pluginId
  --enable <pluginId>             - habilitar plugin con pluginId
  --list-all                      - listar todos los plugins incluidos los integrados y dropins
  --list-versions <locationId>    - obtener las últimas versiones del plugin desde locationId (descargará todos los artefactos, limitado a 10)
  -h, --help                      - imprimir esta ayuda

Solución de problemas

Consulte la página wiki Preguntas y respuestas sobre solución de problemas

Contribuir

Para apoyar este proyecto puede:

  • Publicar ideas sobre nuevas características/optimizaciones que sean importantes para usted
  • Enviar problemas de descompilación, por favor lea antes de proceder: Abrir issue
  • Abrir pull request, por favor siga estas reglas: Proceso de Pull Request

Licenciado bajo la Licencia Apache 2.0

Descargar herramienta