Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
dexcalibur — [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. | Kitploit
Strumenti/GitHubGitHub/reversenseorg/dexcalibur
Sicurezza AndroidAnalisi StaticaAnalisi Dinamica (Sandboxing)Reverse EngineeringDebuggerFuzzingSicurezza MobileAnalisi di Binari

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Informazioni

GitHub
reversenseorg/dexcalibur

dexcalibur

Vedi Repository
1.2k13063 giorni faRevisionato da Kitploit

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

Condividi

WiP : Passaggio a dexcalibur 2.0 | nome in codice : Reversense

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

Dexcalibur banner

Dexcalibur

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:

  • Decompilare/disassemblare bytecode intercettato in runtime
  • Scrivere codice hook e gestire molti messaggi hook
  • Cercare pattern/cose interessanti da hookare
  • Elaborare i dati raccolti dagli hook (file dex, metodo invocato, class loader, …)
  • e così via…

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

https://discord.gg/Pfw7Kc3dS

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)

Come supportare Dexcalibur?

Contribuisci!

Non esitare! Ci sono diversi modi per contribuire:

  • Fare una pull request relativa a una correzione o a una nuova funzionalità
  • Creare un issue per aiutarmi a correggere/migliorare gli strumenti
  • Aiutarmi a sviluppare l'interfaccia utente
  • Inviarmi una email con il tuo feedback
  • ecc…

A. Installazione

A.1 Nuova installazione

Vai alla documentazione di installazione

Alternativa: usa Docker

  • sul tuo host, installa adb (e un emulatore Android se appropriato)
  • 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 Avviare dexcalibur

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

A.3 Aggiornamento

Dalla versione <= 0.6.x

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.

Dalla versione >= 0.7

Semplicemente eseguendo:

root@kitploit:~
$  npm install -g dexcalibur

La configurazione e il workspace esistenti verranno rilevati automaticamente.

C. Schermate

Le seguenti schermate illustrano l'aggiornamento automatico degli xref in runtime.

Xref auto update

Features

D. Funzionalità e limitazioni

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.

D.1 Funzionalità

D.1.A Analizzatore statico

TODO: scrivi testo

D.1.B Gestore hook

TODO: scrivi testo

D.1.C VM smali di Dexcalibur

Comportamenti tracciati

L'analizzatore statico coinvolto nell'azione "Run smali (VM)" è in grado di scoprire e accettare, ma traccia i seguenti comportamenti:

  • Registro di destinazione fuori dai limiti (registro fuori da v0 - v255)
  • Registro sorgente fuori dai limiti (registro fuori da v0 - v65535)
  • Rileva istruzioni non valide che generano implicitamente un'eccezione interna
  • Rileva alcuni pezzi di bytecode valido ma non conforme alle specifiche Android
  • Calcola la lunghezza di un array non definito
  • Riempie un array non definito
  • e altro ancora…

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:

  • nessuna semplificazione del CFG: vengono visualizzati salti condizionali e incondizionali.
  • ogni move in un registro viene visualizzato

Secondo livello:

  • Nasconde l'assegnazione se il registro non viene modificato con un valore sconosciuto prima del suo utilizzo.
  • I predicati sempre TRUE/FALSE vengono rimossi
  • I salti incondizionali come goto vengono rimossi in determinate condizioni: unico predecessore del blocco di base target, ecc...
  • Risolve e sostituisce la chiamata a Method.invoke() con il metodo chiamato, se possibile.
  • Le istruzioni in un blocco Try non vengono visualizzate se viene lanciata un'eccezione prima
  • ...

Mock dell'API Android

TODO

Dettagli

La VM smali segue i seguenti passaggi:

  1. Inizializza VM: memoria stack, heap, classloaders, method area, ...
  2. La VM carica la classe che dichiara il metodo.
  3. (Opzionale) Se la classe ha blocchi statici, viene eseguito clinit(). Aiuta a risolvere il valore concreto memorizzato nelle proprietà statiche.
  4. Carica i metadati del metodo
  5. Esegue le istruzioni del metodo; se PseudoCodeMaker è abilitato, viene generato l'IR di Dexcalibur.

Come gestisce la VM le istruzioni invoke-*?

  1. Quando si verifica un invoke-*, la tabella dei simboli locale viene salvata e il metodo invocato viene caricato.
  2. Se la classe che dichiara il metodo invocato non è mai stata caricata, la classe viene caricata.
  3. Se il metodo non è mai stato caricato, il metodo viene caricato (da MethodArea) e la sua tabella dei simboli locale viene inizializzata importando i simboli degli argomenti dalla tabella dei simboli del chiamante.
  4. Il metodo invocato viene inserito nello stack di chiamate (StackMemory).
  5. Le istruzioni del metodo vengono eseguite.
  6. Il valore di ritorno viene inserito nello stack di memoria.
  7. Il chiamante riprende il controllo del flusso.

D.1.D Analizzatori di topologia dell'applicazione

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

D.1.E Monitoraggio in runtime (non implementato)

Monitoraggio della rete

Monitoraggio degli Intent

Monitoraggio dell'accesso ai file

D.1.F Funzionalità collaborative

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:

  • Nessuna autenticazione: chiunque nella rete può inviare richieste all'istanza Dexcalibur ed eseguire RCE sull'host attraverso il motore di ricerca.
  • Nessuna identificazione: le modifiche non vengono tracciate, quindi se qualcuno rinomina un simbolo, non puoi sapere chi lo ha rinominato. Caso simile: non sei in grado di sapere chi ha creato un hook specifico.
  • Instrumentazione su singolo dispositivo: se più dispositivi sono collegati all'host di Dexcalibur, e anche se puoi scegliere il dispositivo da instrumentare, l'instrumentazione e i messaggi hook sono legati all'ultimo dispositivo selezionato. Quindi non è possibile generare instrumentazione per più dispositivi contemporaneamente.

E. Contributori su Github

Un ringraziamento speciale ai contributori:

  • ubamrein
  • jhscheer
  • eybisi
  • monperrus
  • cryptax

F. Risoluzione dei problemi

F.1 Dexcalibur continua ad avviarsi in 'modalità installazione'

Prima di approfondire:

  • Assicurati di essere connesso a Internet: Apktool e la piattaforma target vengono scaricati durante l'installazione
  • Hai provato a reinstallarlo eseguendo il comando dexcalibur --reinstall? Se no, prova.

Prima, controlla se le impostazioni globali sono state salvate in <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/"
}

Successivamente, controlla che la struttura del workspace di Dexcalibur sia la seguente (il contenuto della cartella /api può variare).

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. Domande frequenti

Il mio dispositivo non appare nell'elenco dei dispositivi

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.

Il debug USB è abilitato, ma il mio dispositivo non appare nell'elenco dei dispositivi

  • Connetti/scollega USB e assicurati che il computer sia autorizzato.
  • Seleziona trasferimento file

Perché registrare un nuovo dispositivo?

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.

Il mio dispositivo è elencato in Device Manager, ma non può essere registrato

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

G.1 Il mio dispositivo è elencato in Device Manager

Se il tuo dispositivo è elencato in DeviceManager e la colonna online è spuntata, allora clicca su enroll

Come usare un emulatore invece di un dispositivo fisico?

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.

Come usare un dispositivo via TCP?

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.

Come contribuire a dexcalibur?

Crea una pull request su questo repository o crea un issue.

Come contribuire alla documentazione?

Crea una pull request sul repository dexcalibur-doc.

La documentazione è disponibile qui (sito web della documentazione) e qui (wiki)

H. Sponsor

https://www.jetbrains.com/?from=dexcalibur
Ci hanno offerto una licenza per tutti i prodotti <3

I. Risorse

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.

  • THCon 2020
  • SSTIC 2020
  • Slide di Pass the SALT 2019 (PDF)
  • YouTube: dimostrazione
  • Guida utente CLI
  • Guida utente
  • Risoluzione dei problemi
  • Schermate

J. Hanno scritto qualcosa su 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
Scarica lo strumento