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
decomp2dbg — Un plugin per introdurre simboli interattivi nel tuo debugger dal tuo decompilatore | Kitploit
Strumenti/GitHubGitHub/mahaloz/decomp2dbg
Analisi StaticaAnalisi Dinamica (Sandboxing)Reverse EngineeringDebuggerAnalisi di BinariBinary Exploitation
GitHubmahaloz/decomp2dbg

decomp2dbg

Un plugin per introdurre simboli interattivi nel tuo debugger dal tuo decompilatore

Vedi Repository
8124841 mese faRevisionato da Kitploit

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 →
Condividi

decomp2dbg

Il reverse engineering coinvolge sia l'analisi statica (decompilatore) che quella dinamica (debugger), ma spesso usiamo queste analisi senza condividere conoscenze tra le due. Nel caso del reverse engineering di binari statici, il cambio di contesto tra l'assembly del debugger e i simboli che hai ricostruito nella decompilazione può essere inefficiente.

decomp2dbg mira a ridurre il divario del cambio di contesto tra decompilatore e debugger introducendo un'API generica per la sincronizzazione dei simboli dal decompilatore al debugger. In pratica, offre al reverser la potenza del proprio debugger con i simboli e le righe di decompilazione recuperati nel proprio decompilatore.

decomp2dbg

Interessato a vedere decomp2dbg in azione? Dai un'occhiata al talk registrato al CactusCon 2023, che mostra il debugging di un binario arm32 remoto da una macchina x64 con simboli di Ghidra.

Per assistenza attiva, unisciti al BinSync Discord qui sotto, dove rispondiamo alle domande su decomp2dbg:

Discord

Piattaforme supportate

Decompilatori

  • IDA Pro (>= 9.0): Demo con GEF
  • Binary Ninja (>= 2.4): Demo con GEF
  • Ghidra (>= 12): Demo con GEF
  • angr-management (>= 9.0)
  • Debugger

    • gdb
      • GEF
      • pwndbg
      • vanilla

    Installazione

    Installa tramite pip, poi usa l'installer integrato per i decompilatori:

    root@kitploit:~
    pip3 install decomp2dbg && decomp2dbg --install 
    

    Si aprirà un prompt in cui ti verrà chiesto di inserire il percorso del tuo decompilatore e debugger preferiti. Per Ghidra, dovrai avviarlo in modalità PyGhidra e abilitare il plugin (d2d_client.py), come mostrato qui. Se hai installato la parte del decompilatore tramite il Plugin Manager di Binja, devi comunque installare la parte del debugger con il comando sopra. Nota: devi installare decomp2dbg nello stesso ambiente Python del tuo decompilatore e debugger.

    Nota: Potresti dover consentire connessioni in entrata sulla porta 3662, o la porta che usi, affinché decomp2dbg si connetta al decompilatore. Se stai installando decomp2dbg con GEF o pwndbg, è importante che nel tuo ~/.gdbinit il file d2d.py sia incluso dopo GEF o pwndbg.

    Installazione manuale

    Salta questa sezione se sei stato in grado di usare l'installazione sopra senza errori. Se non puoi usare lo script integrato (installazione Windows non WSL per il decompilatore), segui i passaggi seguenti:

    Se hai solo bisogno della parte del decompilatore, copia il plugin del decompilatore associato nella cartella dei plugin del decompilatore. Ecco come fare in IDA:

    Prima, clona il repository:

    root@kitploit:~
    git clone https://github.com/mahaloz/decomp2dbg.git
    

    Installa:

    root@kitploit:~
    pip install .
    

    Copia il file del server:

    root@kitploit:~
    cp ./decomp2dbg/d2d_server.py /path/to/ida/plugins/
    

    Se devi anche installare la parte gdb, usa il comando seguente:

    root@kitploit:~
    cp ./decomp2dbg/d2d_client.py ~/.d2d.py && echo "source ~/.d2d.py" >> ~/.gdbinit
    

    Utilizzo

    Prima, avvia il server di decompilazione sul tuo decompilatore. Potresti voler attendere che il decompilatore termini la sua analisi normale prima di avviarlo. Dopo l'analisi normale, puoi farlo usando la combinazione di tasti Ctrl-Shift-D, oppure selezionando la scheda decomp2dbg: configure nella scheda dei plugin associati. Dopo aver avviato il server, dovresti vedere un messaggio nel tuo decompilatore

    root@kitploit:~
    [+] Starting XMLRPC server: localhost:3662
    [+] Registered decompilation server!
    

    Successivamente, nel tuo debugger, esegui:

    root@kitploit:~
    decompiler connect <nome_decompilatore>
    

    Se stai eseguendo il decompilatore su una VM o una macchina diversa, puoi opzionalmente fornire l'host e la porta a cui connetterti. Ecco un esempio:

    root@kitploit:~
    decompiler connect ida --host 10.211.55.2 --port 3662
    

    Puoi scoprire come usare tutti i comandi eseguendo il comando decompiler con il flag --help.

    La prima connessione può richiedere fino a 30 secondi per registrarsi a seconda della quantità di globali nel binario. Se tutto va bene, dovresti vedere:

    root@kitploit:~
    [+] Connected to decompiler!
    

    Se stai usando decomp2dbg per una libreria, cioè il binario principale a cui il tuo debugger è collegato non è il binario per cui vuoi il sorgente, allora dovresti dare un'occhiata alla sezione Utilizzo avanzato - Librerie condivise del readme.

    Vista decompilazione

    Ad ogni evento di breakpoint, ora vedrai stampata la decompilazione, e la riga su cui ti trovi associata all'indirizzo di break.

    Funzioni e variabili globali

    Le funzioni e le variabili globali della tua decompilazione sono ora mappate nel tuo GDB come normali simboli a livello di sorgente. Questo significa che i normali comandi GDB come print ed examination sono nativi:

    root@kitploit:~
    b sub_46340
    x/10i sub_46340
    
    root@kitploit:~
    p dword_267A2C 
    x dword_267A2C
    

    Variabili di stack, variabili di registro, argomenti di funzione

    Alcune variabili memorizzate localmente in una funzione sono variabili di stack. Per le variabili che possono essere mappate allo stack o ai registri, le importiamo come variabili di comodo. Puoi vedere il loro contenuto come una normale variabile di comodo GDB:

    root@kitploit:~
    p $v4
    

    Le variabili di stack memorizzeranno sempre il loro indirizzo nello stack. Per vedere il valore effettivo in quella variabile di stack, basta dereferenziare la variabile:

    root@kitploit:~
    x $v4
    

    Questo funziona anche con gli argomenti di funzione, se applicabile (i risultati possono variare):

    root@kitploit:~
    p $a1
    

    Nota: $v4 in questo caso sarà mappato solo finché sei nella stessa funzione. Una volta uscito dalla funzione, potrebbe essere smappato o rimappato a un altro valore.

    Utilizzo avanzato

    Librerie condivise

    Quando vuoi che la decompilazione (e i simboli) venga visualizzata per una sezione di memoria che non è il binario principale, come durante il debug di una libreria condivisa, devi seguire alcuni passaggi extra. Attualmente, d2d supporta solo un decompilatore connesso alla volta, il che significa che se hai attualmente un decompilatore connesso che non è la libreria, devi disconnetterlo.

    Dopo aver seguito la configurazione normale per avere il tuo decompilatore che esegue il server d2d per la tua libreria condivisa, devi impostare manualmente l'indirizzo di base di questa libreria e il suo indirizzo finale:

    root@kitploit:~
    decompiler connect ida --base-addr-start 0x00007ffff7452000 --base-addr-end 0x00007ffff766d000
    

    Per trovare l'indirizzo di base a cui la tua libreria è caricata in memoria, si consiglia di usare qualcosa come il comando vmmap di GEF per cercare il nome della libreria nello spazio di memoria. Dopo esserti connesso con questo indirizzo impostato manualmente, i simboli funzioneranno come nel normale d2d. La decompilazione verrà stampata a schermo solo quando ti trovi nell'intervallo di questo spazio di indirizzi.

    Funzionalità

    • Vista contestuale di decompilazione auto-aggiornante
    • Sincronizzazione automatica dei nomi delle funzioni
    • Simboli su cui fare break/ispezionabili
    • Sincronizzazione automatica dei nomi delle variabili di stack
    • Sincronizzazione automatica delle strutture
    • Creazione DWARF online
    • Sincronizzazione dei tipi di funzione
    • Supporto lldb
    • Supporto windbg
    Scarica lo strumento