
[Ufficiale] Strumento di reverse engineering Android focalizzato sull'automazione dell'instrumentazione dinamica sfruttando Frida. Disassembla dex, lo analizza staticamente, genera hook, scopre metodi riflessi, memorizza i dati intercettati e ne ricava nuove informazioni. Il suo obiettivo è essere una piattaforma tutto-in-uno per il reverse engineering Android.

Dexcalibur è una piattaforma di reverse engineering Android focalizzata sull'automazione dell'instrumentazione. La sua particolarità è l'uso dell'analisi dinamica per migliorare le euristiche di analisi statica. Mira ad automatizzare compiti noiosi legati all'instrumentazione dinamica, come:
Ma non solo, perché Dexcalibur ha un proprio motore di analisi statica ed è in grado di eseguire porzioni parziali di smali.
Vuoi condividere qualcosa o hai bisogno di aiuto? Unisciti alle nostre chat ufficiali:
Telegram - il modo più rapido per ricevere una risposta
La documentazione ufficiale è disponibile qui (sito in lavorazione).
Vedi le ultime notizie qui: http://docs.dexcalibur.org/News.html
Guarda i video dimostrativi di Dexcalibur: Demo: Meno di 1 minuto per hookare 61 metodi? Nessun problema. (youtube)
Contribuisci!
Non esitare! Ci sono diversi modi per contribuire:
Vai alla documentazione di installazione
Alternativa: usa Docker
adb (e un emulatore Android se appropriato)docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashPer Linux e MacOS
Installazione NPM: Se Dexcalibur è stato installato globalmente usando NPM (opzione -g), allora Dexcalibur può essere avviato dal terminale eseguendo $ dexcalibur, altrimenti può essere avviato con $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js.
Installazione da sorgente: dalla cartella dexcalibur, esegui $ dexcalibur o $ node dexcalibur.js.
Per Windows
Installazione NPM: Anche se Dexcalibur è installato globalmente usando NPM (opzione -g), Dexcalibur deve essere avviato dal terminale eseguendo il seguente comando da un terminale node <NPM_ROOT>/dexcalibur/dexcalibur.js.
Installazione da sorgente: dalla cartella dexcalibur, nel terminale, esegui il comando node dexcalibur.js.
Stai usando una versione precedente di Dexcalibur?
Segui gli stessi passaggi di una nuova installazione e, quando ti viene chiesto il percorso del workspace, inserisci la posizione del tuo workspace attuale.
Semplicemente eseguendo:
$ npm install -g dexcalibur
La configurazione e il workspace esistenti verranno rilevati automaticamente.
Le seguenti schermate illustrano l'aggiornamento automatico degli xref in runtime.


Attualmente, la limitazione più grande è che Dexcalibur non è in grado di generare codice sorgente di hook che targettano funzioni native (in librerie JNI). Tuttavia, puoi dichiarare manualmente un Interceptor di Frida modificando un hook.
Considerando che Dexcalibur non fornisce (per il momento) funzionalità per analizzare la parte nativa come librerie JNI o JNA, sono state dettagliate solo le funzionalità e limitazioni relative alla parte Java.
L'accuratezza dell'analisi dipende dalla completezza dell'immagine dell'API Android utilizzata durante le prime fasi dell'analisi. Ciò significa che, se utilizzi un file DEX generato dal file Android.jar di Android SDK, alcuni riferimenti a metodi, campi o classi interne dell'API Java Android potrebbero mancare. Risultati migliori si ottengono quando l'analisi parte da un file "boot.oat" estratto direttamente da un dispositivo reale che esegue la versione Android prevista.
TODO: scrivi testo
TODO: scrivi testo
Comportamenti tracciati
L'analizzatore statico coinvolto nell'azione "Run smali (VM)" è in grado di scoprire e accettare, ma traccia i seguenti comportamenti:
Attualmente, gestori/listener per tali istruzioni non valide non sono supportati, ma gli eventi vengono tracciati e visualizzati.
IR di Dexcalibur
La VM produce una rappresentazione intermedia (IR) personalizzata e semplificata che viene visualizzata solo per aiutare l'analista a svolgere la propria analisi.
A seconda del valore della profondità dello stack di chiamate e della configurazione, l'IR può includere o meno le istruzioni eseguite nella funzione chiamata. Se l'esecuzione entra in un blocco try e prosegue fino al return, ma non esegue mai il catch, allora il blocco catch non verrà visualizzato. In effetti, lo scopo dell'IR di Dexcalibur è visualizzare solo "ciò che viene eseguito" o "ciò che potrebbe essere eseguito a seconda del valore di qualche simbolo" nel contesto della VM.
L'IR di Dexcalibur aiuta a leggere una versione ripulita del bytecode rimuovendo goto inutili e predicati opachi. L'IR di Dexcalibur può essere generato dalla VM con 2 livelli di semplificazione:
IR di primo livello, potrebbe essere usato se non ti fidi dell'IR di secondo livello:
Secondo livello:
Mock dell'API Android
TODO
Dettagli
La VM smali segue i seguenti passaggi:
Come gestisce la VM le istruzioni invoke-*?
Analisi del manifest (LIMITATA)
Prima della prima esecuzione, il manifest Android dell'applicazione viene analizzato. In realtà, anomalie nel manifest come configurazioni non sicure vengono rilevate a questo livello.
L'unico scopo dell'analisi del manifest Android è quello di popolare altri tipi di analizzatori.
Analisi dei permessi
Tutti i permessi estratti dal manifest vengono elencati e identificati e confrontati con le specifiche Android della versione API Android target.
Dexcalibur fornisce - solo in alcuni casi - una descrizione dello scopo del permesso, la versione API Android minima, ...
Analisi delle attività
Analisi dei provider
Analisi dei servizi
Analisi dei receiver
Monitoraggio della rete
Monitoraggio degli Intent
Monitoraggio dell'accesso ai file
Non trovi un menu multiutente? Nessun problema, non c'è un menu ma è possibile realizzare un lavoro collaborativo minimalista.
Dexcalibur esegue un web server. Quindi, se più persone sono sulla stessa rete di questo web server e se il firewall dell'host è ben configurato, potete essere in più a lavorare sulla stessa istanza di Dexcalibur.
Le limitazioni attuali sono:
Un ringraziamento speciale ai contributori:
Prima di approfondire:
dexcalibur --reinstall? Se no, prova.Prima, controlla se le impostazioni globali sono state salvate in <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/"
}
Successivamente, controlla che la struttura del workspace di Dexcalibur sia la seguente (il contenuto della cartella /api può variare).
$ 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 ..
Se usi un dispositivo fisico connesso via USB, assicurati che la modalità sviluppatore e il debug USB siano abilitati.
Se usi un dispositivo virtuale, vai su /splash.html, seleziona Device Manager, clicca Connect over TCP ... e segui le istruzioni. Se non conosci l'indirizzo IP del tuo dispositivo, lascia che Dexcalibur lo rilevi spuntando la casella automatic configuration.
Devi registrare il dispositivo target prima di poterlo utilizzare. Durante la registrazione, Dexcalibur raccoglie i metadati del dispositivo e inserisce una versione compatibile del server Frida.
Tali metadati vengono utilizzati per selezionare i target frida-server e frida-gadget corretti.
Se un punto esclamativo rosso ! appare su una riga nell'elenco dei dispositivi, allora il desktop non è autorizzato dal dispositivo. Probabilmente devi confermare
Se il tuo dispositivo è elencato in DeviceManager e la colonna online è spuntata, allora clicca su enroll
Se il tuo dispositivo è elencato in DeviceManager e la colonna online è spuntata, allora clicca su enroll
Dexcalibur versione < v0.7 non era in grado di rilevare automaticamente un dispositivo emulato e usarlo a causa di un'analisi incompleta dell'output ADB.
Dalla versione >= v0.7, una volta che il tuo dispositivo virtuale è in esecuzione, vai su /splash.html o clicca su DEXCALIBUR nella barra di navigazione. Clicca sul pulsante Device Manager nel menu di sinistra e clicca sul pulsante Refresh in cima alla tabella.
Dovresti vedere una riga che inizia con l'ID ADB del tuo dispositivo virtuale.
Prima, come per qualsiasi dispositivo target, dovresti registrarlo.
Clicca Connect over TCP ... per aggiungere un nuovo dispositivo via TCP o per connettere un dispositivo già registrato via TCP.
Se il dispositivo non è mai stato registrato, la registrazione verrà eseguita via TCP. In alcuni casi, la connessione via TCP è più lenta di quella via USB. Quindi la registrazione può richiedere più tempo.
Se il dispositivo è stato registrato via USB, il nuovo tipo di trasporto preferito per questo dispositivo diventa TCP.
Crea una pull request su questo repository o crea un issue.
Crea una pull request sul repository dexcalibur-doc.
La documentazione è disponibile qui (sito web della documentazione) e qui (wiki)
![]() |
|---|
| Ci hanno offerto una licenza per tutti i prodotti <3 |
In realtà ci sono poche risorse di documentazione e formazione su Dexcalibur. Se hai usato con successo Dexcalibur per vincere una sfida CTF o per trovare una vulnerabilità, ti incoraggio vivamente a condividere la tua esperienza.