Plugin de Cadenas Mágicas para JADX
Un plugin para JADX que extrae información de constantes de cadena (string).
Características
El plugin extrae y analiza constantes de cadena del código descompilado para encontrar:
- Referencias a Archivos Fuente: Detecta referencias a archivos fuente de Java/Kotlin (
.java, .kt, .kts, .scala, .groovy) dentro de constantes de cadena.
- Candidatos a Nombres de Método: Identifica posibles nombres de método a partir de cadenas usando patrones de expresiones regulares.
- Análisis de Cadenas: Recolecta todas las constantes de cadena junto con sus métodos y clases asociadas.
Instalación
Opción 1: Instalar desde GitHub (Recomendada)
Si este plugin está publicado en GitHub, puedes instalarlo directamente:
jadx plugins --install "github:0rshemesh:jadx-magic-strings"
Opción 2: Compilar e Instalar desde el Código Fuente
-
Clona el repositorio:
git clone https://github.com/0rshemesh/jadx-magic-strings.git
cd jadx-magic-strings
-
Compila el plugin:
-
Instala el plugin:
jadx plugins --install-jar build/libs/jadx-magic-strings-1.0.1.jar
O copia manualmente el JAR al directorio de plugins de JADX:
- Linux/Mac:
~/.local/share/jadx/plugins/dropins/
- Windows:
%APPDATA%\jadx\plugins\dropins\
Compilación del Plugin
El plugin se puede compilar de forma independiente:
El JAR del plugin se creará en:
build/libs/jadx-magic-strings-1.0.1.jar
Requisitos:
- Java 11 o superior
- Gradle (o usa el wrapper de Gradle incluido:
./gradlew)
Uso
En la interfaz gráfica de JADX (GUI)
-
Instala el plugin (consulta la sección de Instalación anterior)
-
Ejecuta JADX GUI:
-
Abre tu archivo APK/DEX en JADX GUI
-
Espera a que termine la descompilación (el plugin se ejecuta automáticamente después de la descompilación)
-
Accede al plugin:
- Ve al menú Plugins en la barra de menú
- Haz clic en "Magic Strings: Show Results"
- Se abrirá una ventana de diálogo con varias pestañas:
- Source Files: Vista de árbol con las rutas de archivos fuente detectadas y sus referencias
- Top Candidates + Source Files: Vista combinada de los candidatos a método con mayor puntuación, agrupados por archivo fuente
- Method Candidates (Filtered): Tabla con los nombres de método candidatos filtrados
- All Strings: Tabla con todas las constantes de cadena extraídas

En la línea de comandos de JADX (CLI)
El plugin se ejecuta automáticamente durante la descompilación, pero no hay una interfaz CLI para ver los resultados. Usa la GUI para consultar la información extraída.
Cómo Funciona
- Después de la descompilación, el plugin escanea todos los métodos de todas las clases.
- Extrae las constantes de cadena de los nodos de instrucciones (instrucciones CONST_STR).
- Analiza las cadenas usando patrones de expresiones regulares:
- Archivos fuente: Coincide con rutas de archivo que terminan en
.java, .kt, etc.
- Nombres de método: Coincide con patrones camelCase que parecen nombres de método.
- Almacena los resultados en una estructura de datos accesible a través de la GUI.
Casos de Uso de Ejemplo
- Ingeniería inversa: Encontrar nombres de archivos fuente originales que podrían revelar la estructura del proyecto.
- Desofuscación: Identificar nombres de método a partir de cadenas de depuración o mensajes de error.
- Análisis de código: Comprender las relaciones entre cadenas y métodos.
- Análisis de malware: Extraer cadenas interesantes que podrían indicar funcionalidades.
Limitaciones
- El plugin solo funciona después de que la descompilación se haya completado.
- La extracción de cadenas depende de que el código se haya descompilado (es posible que el código ofuscado no tenga cadenas accesibles).
- La detección de nombres de método utiliza heurísticas y puede producir falsos positivos.
- La detección de archivos fuente depende de que las cadenas contengan rutas de archivo (no siempre presentes).
Solución de Problemas
El plugin no aparece en el menú:
- Asegúrate de que el plugin esté instalado correctamente.
- Comprueba que el JAR del plugin esté en el directorio de plugins.
- Verifica que exista el archivo de servicio:
META-INF/services/jadx.api.plugins.JadxPlugin.
- Asegúrate de usar una versión compatible de JADX (1.5.2+).
No se muestran resultados:
- El código podría no contener cadenas relevantes.
- Prueba descompilando un archivo APK/DEX diferente.
- Es posible que el código ofuscado no tenga cadenas extraíbles.
Errores de compilación:
- Asegúrate de usar Java 11 o superior.
- Ejecuta
./gradlew clean build para recompilar todo.
- Comprueba que la versión de JADX en
build.gradle.kts coincida con una versión disponible en Maven Central.
Autor
Creado y mantenido por 0rshemesh.
Licencia
Este plugin está licenciado bajo la Licencia Apache 2.0. Consulta el archivo LICENSE para más detalles.