
[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.

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 :
¿Quieres compartir algo o necesitas ayuda? Únete a nuestros chats oficiales :
Telegram - la forma más rápida de obtener una respuesta
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)
¡Contribuye!
¡No dudes! Hay varias formas de contribuir :
Alternativa: usar Docker
adb (y un emulador de Android si es apropiado)docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashPara 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.
¿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.
Simplemente ejecutando:
$ npm install -g dexcalibur
La configuración y el espacio de trabajo existentes se detectarán automáticamente.
Las siguientes capturas de pantalla ilustran la actualización automática de xrefs en tiempo de ejecución.


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.
TODO : escribir texto
TODO : escribir texto
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 :
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 :
Segundo nivel :
Mock de la API de Android
TODO
Detalles
La VM smali sigue los siguientes pasos :
¿Cómo maneja la VM la instrucción invoke-*?
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
Monitoreo de red
Monitoreo de intents
Monitoreo de acceso a archivos
¿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 :
Un agradecimiento especial a los contribuidores :
Antes de profundizar :
dexcalibur --reinstall? Si no, inténtalo.Primero, verifica si la configuración global se ha guardado en <user_directory>/.dexcalibur/
$ 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).
$ 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 ..
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.
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.
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
Si tu dispositivo está listado en DeviceManager y la columna online está marcada, entonces haz clic en enroll
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.
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.
Crea un pull request en este repositorio o crea un issue.
Crea un pull request en el repositorio dexcalibur-doc.
La documentación está disponible aquí (sitio web de documentación) y aquí (wiki)
![]() |
|---|
| Ofrecieron una licencia para Todos los Productos <3 |
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.