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
dexcalibur — [Oficial] Herramienta de ingeniería inversa para Android enfocada en la automatización de instrumentación dinámica mediante Frida. Desensambla dex, lo analiza estáticamente, genera hooks, descubre métodos reflejados, almacena datos interceptados y hace cosas nuevas a partir de ellos. Su objetivo es ser una plataforma integral de ingeniería inversa para Android. | Kitploit
Herramientas/GitHubGitHub/reversenseorg/dexcalibur
Seguridad AndroidAnálisis EstáticoAnálisis Dinámico (Sandboxing)Ingeniería InversaDepuradoresFuzzingSeguridad MóvilAnálisis de Binarios

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 →

Acerca de

[Oficial] Herramienta de ingeniería inversa para Android enfocada en la automatización de instrumentación dinámica mediante Frida. Desensambla dex, lo analiza estáticamente, genera hooks, descubre métodos reflejados, almacena datos interceptados y hace cosas nuevas a partir de ellos. Su objetivo es ser una plataforma integral de ingeniería inversa para Android.

GitHub
reversenseorg/dexcalibur

dexcalibur

Ver Repositorio
1.2k130hace 1 mesRevisado por Kitploit
Compartir

WiP : Moviendo a dexcalibur 2.0 | nombre en clave : Reversense

npm dependencies npm npm Docker Automated build Build Status Twitter Follow PRs Welcome Maintainability

Dexcalibur banner

Dexcalibur

Dexcalibur es una plataforma de ingeniería inversa de Android centrada en la automatización de instrumentación. Su particularidad es usar análisis dinámico para mejorar las heurísticas de análisis estático. Su objetivo es automatizar tareas aburridas relacionadas con la instrumentación dinámica, como :

  • Descompilar/desensamblar bytecode interceptado en tiempo de ejecución
  • Escribir código de hook y gestionar muchos mensajes de hook
  • Buscar patrones/cosas interesantes para hookear
  • Procesar datos recopilados por hook (archivo dex, método invocado, cargador de clases, ...)
  • y así ... Pero no solo eso, porque Dexcalibur tiene su propio motor de análisis estático y es capaz de ejecutar fragmentos parciales de smali.

¿Quieres compartir algo o necesitas ayuda? Únete a nuestros chats oficiales :

Telegram - la forma más rápida de obtener una respuesta

https://discord.gg/Pfw7Kc3dS

La documentación oficial está disponible aquí (sitio web - trabajo en progreso).

Ve las últimas noticias aquí : http://docs.dexcalibur.org/News.html

Mira los videos de demostración de Dexcalibur : Demo: ¿Menos de 1 minuto para hookear 61 métodos? No hay problema. (youtube)

¿Cómo apoyar a Dexcalibur?

¡Contribuye!

¡No dudes! Hay varias formas de contribuir :

  • Hacer un pull request relacionado con una corrección o una nueva característica
  • Crear un issue para ayudarme a parchear/mejorar herramientas
  • Ayudarme a desarrollar la interfaz de usuario
  • Enviarme un correo con tus comentarios
  • etc ...

A. Instalación

A.1 Nueva instalación

Ve a Documento de instalación

Alternativa: usar Docker

  • en tu host, instala adb (y un emulador de Android si es apropiado)
  • docker-compose build android-dexcalibur
  • docker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bash

A.2 Iniciar dexcalibur

Para Linux y MacOS

Instalación con NPM : Si Dexcalibur se ha instalado globalmente usando NPM (opción -g), entonces Dexcalibur se puede iniciar desde la terminal ejecutando $ dexcalibur, de lo contrario se puede iniciar con $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js.

Instalación desde código fuente : desde la carpeta dexcalibur, ejecuta $ dexcalibur o $ node dexcalibur.js.

Para Windows

Instalación con NPM : Incluso si Dexcalibur está instalado globalmente usando NPM (opción -g), Dexcalibur debe iniciarse desde la terminal ejecutando el siguiente comando desde una terminal node <NPM_ROOT>/dexcalibur/dexcalibur.js.

Instalación desde código fuente : desde la carpeta dexcalibur, en la terminal, ejecuta el comando node dexcalibur.js.

A.3 Actualizar

Desde versiones <= 0.6.x

¿Estás usando una versión anterior de Dexcalibur?

Sigue los mismos pasos que una instalación nueva, y cuando debas ingresar la ruta del espacio de trabajo, ingresa la ubicación de tu espacio de trabajo actual.

Desde versiones >= 0.7

Simplemente ejecutando:

root@kitploit:~
$  npm install -g dexcalibur

La configuración y el espacio de trabajo existentes se detectarán automáticamente.

C. Capturas de pantalla

Las siguientes capturas de pantalla ilustran la actualización automática de xrefs en tiempo de ejecución.

Xref auto update

Features

D. Características y limitaciones

Actualmente, la mayor limitación es que Dexcalibur no puede generar código fuente de hooks dirigidos a funciones nativas (en bibliotecas JNI). Sin embargo, puedes declarar manualmente un Interceptor de Frida editando un hook.

Considerando que Dexcalibur no proporciona (por el momento) características para analizar la parte nativa como bibliotecas JNI o JNA, solo se han detallado las características y limitaciones relacionadas con la parte Java.

La precisión del análisis depende de la integridad de la imagen de la API de Android utilizada durante los pasos iniciales del análisis. Esto significa que si usas un archivo DEX generado a partir del archivo Android.jar del SDK de Android, algunas referencias a métodos, campos o clases internas de la API de Java de Android podrían faltar. Se obtienen mejores resultados cuando el análisis comienza desde un archivo "boot.oat" extraído directamente de un dispositivo real que ejecuta la versión esperada de Android.

D.1 Características

D.1.A Analizador estático

TODO : escribir texto

D.1.B Gestor de hooks

TODO : escribir texto

D.1.C Máquina virtual smali de Dexcalibur

Comportamientos rastreados

El analizador estático involucrado en la acción "Ejecutar smali (VM)" es capaz de descubrir y aceptar pero rastrea los siguientes comportamientos :

  • Registro de destino fuera de límites (registro fuera de v0 - v255)
  • Registro de origen fuera de límites (registro fuera de v0 - v65535)
  • Detectar instrucción inválida que lanza implícitamente una excepción interna
  • Detectar algún fragmento de bytecode válido no conforme con la especificación de Android
  • Calcular longitud de array indefinido
  • Llenar array indefinido
  • y más ...

Actualmente, los manejadores/escuchas para tales instrucciones inválidas no son compatibles, pero los eventos se rastrean y se muestran.

IR de Dexcalibur

La VM produce una Representación Intermedia (IR) personalizada y simplificada que se muestra solo para ayudar al analista a realizar su análisis.

Dependiendo del valor de la profundidad de la pila de llamadas y la configuración, el IR puede incluir o no instrucciones ejecutadas dentro de la función llamada. Si la ejecución entra en un bloque try y continúa hasta retornar, pero nunca ejecuta el catch, entonces el bloque catch no se mostrará. De hecho, el propósito del IR de Dexcalibur es mostrar solo "lo que se ejecuta" o "lo que podría ejecutarse dependiendo del valor de algún símbolo" en el contexto de la VM.

El IR de Dexcalibur ayuda a leer una versión limpia del bytecode eliminando goto inútiles y predicados opacos. El IR de Dexcalibur puede ser generado por la VM con 2 niveles de simplificación :

IR de primer nivel, podría usarse si no confías en el IR de segundo nivel :

  • sin simplificación de CFG : se muestran las condiciones y saltos incondicionales.
  • se muestra cada movimiento a un registro

Segundo nivel :

  • Ocultar asignación si el registro no se modifica con un valor desconocido antes de su uso.
  • Los predicados siempre VERDADERO/FALSO se eliminan
  • Los saltos incondicionales como goto se eliminan bajo ciertas condiciones : predecesor único del bloque básico objetivo, etc ...
  • Resolver y reemplazar la llamada Method.invoke() por el método llamado si es posible.
  • Las instrucciones dentro de un bloque Try no se muestran si se lanza una excepción antes
  • ...

Mock de la API de Android

TODO

Detalles

La VM smali sigue los siguientes pasos :

  1. Inicializar VM : memoria de pila, heap, cargadores de clases, área de métodos, ...
  2. La VM carga la clase que declara el método.
  3. (Opcional) Si la clase tiene bloques estáticos, se ejecuta clinit(). Ayuda a resolver el valor concreto almacenado en propiedades estáticas.
  4. Cargar metadatos del método
  5. Ejecutar instrucciones del método, si PseudoCodeMaker está habilitado, se genera el IR de Dexcalibur.

¿Cómo maneja la VM la instrucción invoke-*?

  1. Cuando ocurre un invoke-*, se guarda la tabla de símbolos local y se carga el método invocado.
  2. Si la clase que declara el método invocado nunca se ha cargado, se carga la clase.
  3. Si el método nunca se ha cargado, se carga el método (por MethodArea) y su tabla de símbolos local se inicializa importando los símbolos de los argumentos desde la tabla de símbolos del llamador.
  4. El método invocado se inserta en la pila de llamadas (StackMemory).
  5. Se ejecutan las instrucciones del método.
  6. El valor de retorno se inserta en la memoria de pila
  7. El llamador cede el control de flujo

D.1.D Analizadores de topología de aplicaciones

Análisis de manifiesto (LIMITADO)

Antes de la primera ejecución, se analiza el manifiesto de Android de la aplicación. Actualmente, las anomalías en el manifiesto, como configuraciones inseguras, se detectan realmente a este nivel.

El único propósito del análisis del manifiesto de Android es alimentar a otros tipos de analizadores.

Análisis de permisos

Todos los permisos extraídos del manifiesto se listan, identifican y comparan con la especificación de Android de la versión de API de Android objetivo.

Dexcalibur proporciona - solo en algunos casos - una descripción del propósito del permiso, la versión mínima de API de Android, ...

Análisis de actividades

Análisis de proveedores

Análisis de servicios

Análisis de receptores

D.1.E Monitoreo en tiempo de ejecución (no implementado)

Monitoreo de red

Monitoreo de intents

Monitoreo de acceso a archivos

D.1.F Funciones de colaboración

¿No encuentras un menú multiusuario? No hay problema, no hay menú pero se puede lograr un trabajo colaborativo minimalista.

Dexcalibur ejecuta un servidor web. Por lo tanto, si varias personas están en la misma red de este servidor web y si el firewall del host está bien configurado, pueden ser varios trabajando en la misma instancia de Dexcalibur.

Las limitaciones actuales son :

  • Sin autenticación : todos en la red pueden enviar solicitudes a la instancia de Dexcalibur y realizar RCE en el host a través del motor de búsqueda.
  • Sin identificación : las modificaciones no se rastrean, por lo que si alguien renombra un símbolo, no podrías saber quién lo renombró. Caso similar : no puedes saber quién creó un hook específico.
  • Instrumentación de un solo dispositivo : si varios dispositivos están conectados al host de Dexcalibur, e incluso si puedes elegir el dispositivo a instrumentar, la instrumentación y los mensajes de hook están vinculados al último dispositivo seleccionado. Por lo tanto, no puedes generar instrumentación para varios dispositivos simultáneamente.

E. Contribuidores de Github

Un agradecimiento especial a los contribuidores :

  • ubamrein
  • jhscheer
  • eybisi
  • monperrus
  • cryptax

F. Solución de problemas

F.1 Dexcalibur sigue iniciando en 'modo de instalación'

Antes de profundizar :

  • Asegúrate de estar conectado a Internet : Apktool y la plataforma objetivo se descargan durante la instalación
  • ¿Has intentado reinstalarlo ejecutando el comando dexcalibur --reinstall? Si no, inténtalo.

Primero, verifica si la configuración global se ha guardado en <user_directory>/.dexcalibur/

root@kitploit:~
$ ls -la ~/.dexcalibur      

total 8
drwxr-xr-x   3 test_user  staff    96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user  staff  2784 29 avr 11:47 ..
-rw-r--r--   1 test_user  staff   204 29 avr 11:41 config.json


$ cat ~/.dexcalibur/config.json 

{
    "workspace":"/Users/test_user/dexcaliburWS3",
    "registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
    "registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}

A continuación, verifica si la estructura del espacio de trabajo de Dexcalibur es la siguiente (el contenido de la carpeta /api puede diferir).

root@kitploit:~
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
drwxr-xr-x  8 test_user  staff  256 29 avr 11:41 sdk_androidapi_29_google

/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x   4 test_user  staff       128 29 avr 11:41 .
drwxr-xr-x   7 test_user  staff       224 29 avr 11:41 ..
-rwxr-xr-x   1 test_user  staff  17661172 29 avr 11:41 apktool.jar
drwxr-xr-x  18 test_user  staff       576 29 avr 11:41 platform-tools

/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
-rw-r--r--  1 test_user  staff  314 29 avr 11:41 config.json

/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

G. Preguntas frecuentes

Mi dispositivo no aparece en la lista de dispositivos

Si usas un dispositivo físico conectado por USB, asegúrate de que el modo desarrollador y la depuración USB estén habilitados.

Si usas un dispositivo virtual, ve a /splash.html, selecciona Device Manager, haz clic en Connect over TCP ... y sigue las instrucciones. Si no conoces la dirección IP de tu dispositivo, deja que Dexcalibur la detecte marcando la casilla automatic configuration.

La depuración USB está habilitada, pero mi dispositivo no aparece en la lista de dispositivos

  • Conecta/desconecta el USB y asegúrate de que tu computadora esté autorizada.
  • Selecciona transferencia de archivos

¿Por qué inscribir un nuevo dispositivo?

Necesitas inscribir el dispositivo objetivo antes de poder usarlo. Durante la inscripción, Dexcalibur recopila metadatos del dispositivo y envía una versión compatible del servidor de Frida.

Estos metadatos se utilizan para seleccionar los objetivos correctos de frida-server y frida-gadget.

Mi dispositivo está listado en Device Manager, pero no se puede inscribir

Si aparece un signo de exclamación rojo ! en una línea de la lista de dispositivos, entonces tu escritorio no está autorizado por el dispositivo. Probablemente necesites confirmar

Si tu dispositivo está listado en DeviceManager y la columna online está marcada, entonces haz clic en enroll

G.1 Mi dispositivo está listado en Device Manager

Si tu dispositivo está listado en DeviceManager y la columna online está marcada, entonces haz clic en enroll

¿Cómo usar un emulador en lugar de un dispositivo físico?

Dexcalibur versiones < v0.7 no podían detectar automáticamente un dispositivo emulado y usarlo debido a un análisis incompleto de la salida de ADB.

Desde la versión >= v0.7, una vez que tu dispositivo virtual esté en ejecución, ve a /splash.html o haz clic en DEXCALIBUR en la barra de navegación. Haz clic en el botón Device Manager en el menú izquierdo, y haz clic en el botón Refresh en la parte superior de la tabla.

Deberías tener una fila que comience con el ID de ADB de tu dispositivo virtual.

¿Cómo usar un dispositivo a través de TCP?

Primero, como cualquier dispositivo objetivo, debes inscribirlo.

Haz clic en Connect over TCP ... para añadir un nuevo dispositivo a través de TCP o para conectar un dispositivo ya inscrito a través de TCP.

Si el dispositivo nunca ha sido inscrito, la inscripción se realizará a través de TCP. En algunos casos, la conexión a través de TCP es más lenta que por USB. Por lo tanto, la inscripción puede tomar tiempo adicional.

Si el dispositivo ha sido inscrito por USB, el nuevo tipo de transporte preferido para este dispositivo será TCP.

¿Cómo contribuir a dexcalibur?

Crea un pull request en este repositorio o crea un issue.

¿Cómo contribuir a la documentación?

Crea un pull request en el repositorio dexcalibur-doc.

La documentación está disponible aquí (sitio web de documentación) y aquí (wiki)

H. Patrocinadores

https://www.jetbrains.com/?from=dexcalibur
Ofrecieron una licencia para Todos los Productos <3

I. Recursos

Actualmente hay pocos recursos de documentación y capacitación sobre Dexcalibur. Si has usado exitosamente Dexcalibur para ganar un desafío CTF o para encontrar una vulnerabilidad, te animo encarecidamente a que compartas tu experiencia.

  • THCon 2020
  • SSTIC 2020
  • Slides of Pass the SALT 2019 (PDF)
  • Youtube : demonstration
  • CLI User Guide
  • User Guide
  • Troubleshoots
  • Screenshots

J. Escribieron algo sobre Dexcalibur

  • Awesome Frida
  • Awesome OpenSource Security
  • n0secure.org - PassTheSalt2019 J2
  • rootshell.be - PassTheSalt2019 Wrap Up
  • PentesterLand - the 5 hacking newsletter 61
  • Technology Knowledge Database
  • Xuanwu Lab Security
  • Mobile Gitbook
  • 274 - AppsSec Ezine
  • ysh329 / Android Reverse Engineering
Descargar herramienta