Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
IDA-Ghidra-bridge — Server bridge JSON TCP per IDA Pro e Ghidra che espongono decompilazione, xref, simboli, vtable, RTTI e patching della memoria a script esterni e pipeline automatizzate. | Kitploit
Strumenti/GitHubGitHub/oscarsantanaarias/ida-ghidra-bridge
Analisi StaticaAnalisi del CodiceAnalisi Dinamica del Codice (DAST)Reverse EngineeringScripting e AutomazioneDebuggerUtilità e FrameworkAnalisi di BinariReverse Engineering Assistito dall'IA
GitHuboscarsantanaarias/ida-ghidra-bridge

IDA-Ghidra-bridge

Server bridge JSON TCP per IDA Pro e Ghidra che espongono decompilazione, xref, simboli, vtable, RTTI e patching della memoria a script esterni e pipeline automatizzate.

Vedi Repository
4137 giorni faNon ancora revisionato

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

IDA-Ghidra-bridge

Server bridge TCP JSON leggeri per IDA Pro e Ghidra che espongono flussi di lavoro di reverse engineering tramite un semplice protocollo socket.

Consente a strumenti esterni, script CLI, utility Python e pipeline automatizzate di interrogare decompilazione, xref, simboli, tabelle virtuali, RTTI, strutture e patch di memoria senza interazione manuale con la GUI.


Architettura e ciclo di vita

1. Binding dinamico delle porte e supporto multi-istanza

Quando si lavora su grandi progetti di reversing con più binari aperti contemporaneamente (ad esempio client di gioco, launcher, proxy DLL e stub simultaneamente):

  • I server non vanno in crash se una porta è già occupata.
  • Il server inizia a scansionare da BASE_PORT = 5073 e sonda automaticamente le porte sequenziali (5073, 5074, 5075, 5076...) finché non ne trova una disponibile.
  • Ogni finestra IDA o Ghidra si associa alla propria porta in modo indipendente, senza conflitti.

2. Hot-Reloading e riesecuzione pulita

In IDA Pro, l'interprete Python rimane attivo attraverso più esecuzioni di script:

  • ID_Server.py registra l'handle del server in esecuzione in builtins._ida_bridge_prev.
  • Se riesegui o ricarichi lo script nella stessa istanza IDA, viene automaticamente invocato stop() sull'istanza precedente e viene effettuato il join del suo thread (join(3.0)), rilasciando in modo pulito la porta prima di avviare il nuovo server.
  • Non si verifica mai Address already in use né thread orfani a causa della riesecuzione dello script.

3. Arresto controllato

  • Tramite socket: invia QUIT, STOP, EXIT o SHUTDOWN attraverso la connessione. Il server conferma con {"ok": true, "shutdown": true} e si chiude immediatamente.
  • In IDA Pro: chiama ida_bridge_stop() direttamente dalla CLI Python di IDA, oppure chiudi semplicemente IDA (i thread daemon terminano automaticamente).
  • In Ghidra: fai clic sul pulsante rosso Cancel nello Script Manager di Ghidra (is_cancelled() viene verificato ogni 1s tramite timeout del socket), oppure invia QUIT.

Installazione e configurazione

IDA Pro

  1. Apri il database di destinazione (.idb / .i64) in IDA Pro.
  2. Nella CLI Python di IDA (o tramite File -> Script file... / Alt+F7), esegui:
    import ID_Server
    
  3. Il server inizia ad ascoltare su 127.0.0.1:5073 (o sulla porta successiva disponibile).
  4. Per arrestare manualmente il server:
    ida_bridge_stop()
    

Ghidra

  1. Apri il programma di destinazione in Ghidra CodeBrowser.
  2. Nel Script Manager (Window -> Script Manager), aggiungi la cartella contenente Ghidra_Server.py oppure eseguilo direttamente nell'interprete Python.
  3. Il server si associa a 127.0.0.1:5073 (o alla successiva porta libera).

Riferimento completo dei comandi (tutti i 39 comandi)

I comandi sono stringhe semplici delimitate da newline inviate su TCP (127.0.0.1:<PORT>). Il server risponde con un oggetto JSON (o testo delimitato da tabulazioni per i comandi legacy).

1. Navigazione e ispezione

ComandoSintassiDescrizione
PINGPINGControllo di stato. Restituisce "pong".
CURRENTCURRENTRestituisce l'indirizzo corrente del cursore, il nome della funzione, la dimensione, le istruzioni assembly e il codice decompilato.
NAMENAME <ea>Restituisce il nome del simbolo/funzione definito in <ea>.
FUNCFUNC <addr>Restituisce i metadati completi della funzione, il punto di ingresso, la dimensione, la firma, l'assembly e la decompilazione Hex-Rays/Ghidra.
DECOMPDECOMP <addr>Alias di FUNC. Decompila la funzione di destinazione.
DISASMDISASM <ea> [n]Restituisce le righe di disassembly per [n] istruzioni a partire da <ea> (predefinito: 40).
FINDFIND <substr>Ricerca case-insensitive su tutti i simboli e i nomi di funzione corrispondenti a <substr> (fino a 300 corrispondenze).
EXPORTEXPORT [path]Esporta tutti i simboli non dummy, i nomi mangled e demangled in un file di testo (predefinito: C:\Contexto\ida_names.txt).
HELPHELPRestituisce un elenco JSON di tutti i comandi disponibili supportati dal server.
QUITQUITChiude in modo controllato la connessione client e arresta il socket del server bridge.

2. Cross-Reference e call graph

ComandoSintassiDescrizione
XREFXREF <addr>Elenca tutti i cross-reference in ingresso (chiamate di codice, letture/scritture di dati) che puntano a <addr>.
XFROMXFROM <addr>Elenca tutti i cross-reference in uscita che hanno origine da <addr>.
CALLERSCALLERS <addr>Filtra i riferimenti in ingresso per restituire solo i call site (incluse le chiamate indirette risolte).
READERSREADERS <addr>Filtra i riferimenti in ingresso per restituire solo le istruzioni che leggono da <addr>.
WRITERSWRITERS <addr>Filtra i riferimenti in ingresso per restituire solo le istruzioni che scrivono in <addr>.
DECOMP_XREFDECOMP_XREF <addr>Decompila in batch ogni funzione chiamante di <addr> in un'unica richiesta.
IMPORTXREFIMPORTXREF <name>Individua tutti i call site in tutto il binario per un'API Windows/C importata (ad esempio IMPORTXREF WSASendTo).
TRACETRACE <addr>Traccia il flusso di esecuzione e i basic block circostanti <addr>.

3. Puntatori, memoria e strutture

ComandoSintassiDescrizione
READPTRREADPTR <addr> [count]Legge la memoria come catene di puntatori (32-bit o 64-bit) e classifica ciascun target (func, string, vtable).
FINDPTRFINDPTR <addr>Scansiona dati globali e tabelle per trovare qualsiasi puntatore che referenzia <addr> (trova vtable, dispatch table).
STRUCTSTRUCT <addr> [n]Esegue un dump euristico della memoria contigua interpretando i campi come int, float, puntatori e stringhe.
DEFSTRUCTDEFSTRUCT <name> [size]Crea una nuova struttura denominata nella libreria dei tipi del database.
SETFIELDSETFIELD <struct> <off> <type> [name]Definisce o modifica un campo della struttura in <off> con <type> e nome del campo opzionale.
MKPTRSMKPTRS <addr> [count]Converte in blocco i byte grezzi del database in puntatori tipizzati.
NEARSTRNEARSTR <addr>Trova riferimenti a stringhe situati nelle vicinanze in sezioni di codice o dati entro un certo intervallo.

4. Tabelle virtuali e RTTI

ComandoSintassiDescrizione
VTABLEVTABLE <funcaddr>Identifica quali tabelle virtuali contengono <funcaddr>, inclusi gli slot dei metodi adiacenti.
VTDUMPVTDUMP <addr> [count]Esegue il dump di un'intera tabella virtuale: risolve ogni slot nel suo nome di metodo, offset e indice.
RTTIRTTI <addr|Name>Attraversa le strutture RTTI C++ MSVC (TypeDescriptor -> CompleteObjectLocator -> vftable) per risolvere gerarchie di classi e classi base.

5. Scansione di stringhe e byte

ComandoSintassiDescrizione
STRSTR <ascii>Cerca stringhe ASCII in tutti i segmenti caricati.
WSTRWSTR <utf16>Cerca stringhe wide UTF-16 in tutti i segmenti caricati.
BYTESBYTES <hex>Cerca sequenze grezze di opcode o byte di dati (ad esempio BYTES 55 8B EC 83 EC).

6. Modifica del database e tipizzazione

Scarica lo strumento