Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
IDA-Ghidra-bridge — Servidores puente TCP JSON para IDA Pro y Ghidra que exponen descompilación, referencias cruzadas, símbolos, vtables, RTTI y parcheo de memoria a scripts externos y pipelines automatizados. | Kitploit
Herramientas/GitHubGitHub/oscarsantanaarias/ida-ghidra-bridge
Análisis EstáticoAnálisis de CódigoAnálisis Dinámico de Código (DAST)Ingeniería InversaScripting y AutomatizaciónDepuradoresUtilidades y FrameworksAnálisis de BinariosReversing Asistido por IA
GitHuboscarsantanaarias/ida-ghidra-bridge

IDA-Ghidra-bridge

Servidores puente TCP JSON para IDA Pro y Ghidra que exponen descompilación, referencias cruzadas, símbolos, vtables, RTTI y parcheo de memoria a scripts externos y pipelines automatizados.

Ver Repositorio
413hace 7 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

IDA-Ghidra-bridge

Servidores puente TCP JSON ligeros para IDA Pro y Ghidra que exponen flujos de trabajo de ingeniería inversa a través de un protocolo de socket simple.

Permite que herramientas externas, scripts CLI, utilidades Python y pipelines automatizados consulten descompilación, xrefs, símbolos, tablas virtuales, RTTI, estructuras y memoria de parches sin interacción manual con la GUI.


Arquitectura y Ciclo de Vida

1. Vinculación Dinámica de Puertos y Soporte Multi-Instancia

Cuando se trabaja en proyectos grandes de reversing con múltiples binarios abiertos al mismo tiempo (por ejemplo, cliente de juego, lanzador, proxies DLL y stubs simultáneamente):

  • Los servidores no se bloquean si un puerto ya está ocupado.
  • El servidor comienza a escanear en BASE_PORT = 5073 y sondea automáticamente puertos secuenciales (5073, 5074, 5075, 5076...) hasta encontrar uno disponible.
  • Cada ventana de IDA o Ghidra se vincula a su propio puerto de forma independiente sin conflictos.

2. Recarga en Caliente y Re-Ejecución Limpia

En IDA Pro, el intérprete de Python permanece activo a través de múltiples ejecuciones de scripts:

  • ID_Server.py registra el manejador del servidor en ejecución en builtins._ida_bridge_prev.
  • Si vuelves a ejecutar o recargar el script en la misma instancia de IDA, invoca automáticamente stop() en la instancia anterior y une su hilo (join(3.0)), liberando limpiamente el puerto antes de iniciar el nuevo servidor.
  • Nunca obtienes Address already in use ni hilos huérfanos por re-ejecutar el script.

3. Apagado Controlado

  • Vía Socket: Envía QUIT, STOP, EXIT o SHUTDOWN a través de la conexión. El servidor confirma con {"ok": true, "shutdown": true} y cierra inmediatamente.
  • En IDA Pro: Llama a ida_bridge_stop() directamente desde la CLI de Python de IDA, o simplemente cierra IDA (los hilos daemon salen automáticamente).
  • En Ghidra: Haz clic en el botón rojo Cancel en el Script Manager de Ghidra (is_cancelled() se verifica cada 1s mediante timeout de socket), o envía QUIT.

Instalación y Configuración

IDA Pro

  1. Abre tu base de datos objetivo (.idb / .i64) en IDA Pro.
  2. En la CLI de Python de IDA (o vía File -> Script file... / Alt+F7), ejecuta:
    import ID_Server
    
  3. El servidor comienza a escuchar en 127.0.0.1:5073 (o el siguiente puerto disponible).
  4. Para detener el servidor manualmente:
    ida_bridge_stop()
    

Ghidra

  1. Abre tu programa objetivo en Ghidra CodeBrowser.
  2. En el Script Manager (Window -> Script Manager), agrega la carpeta que contiene Ghidra_Server.py o ejecútalo directamente en el intérprete de Python.
  3. El servidor se vincula a 127.0.0.1:5073 (o el siguiente puerto libre).

Referencia Completa de Comandos (Los 39 Comandos)

Los comandos son cadenas de texto plano delimitadas por saltos de línea enviadas por TCP (127.0.0.1:<PORT>). El servidor responde con un objeto JSON (o texto delimitado por tabulaciones para comandos legacy).

1. Navegación e Inspección

ComandoSintaxisDescripción
PINGPINGVerificación de estado. Devuelve "pong".
CURRENTCURRENTDevuelve la dirección actual del cursor, nombre de función, tamaño, instrucciones de ensamblador y código descompilado.
NAMENAME <ea>Devuelve el nombre del símbolo/función definido en <ea>.
FUNCFUNC <addr>Devuelve metadatos completos de la función, punto de entrada, tamaño, firma, ensamblador y descompilación Hex-Rays/Ghidra.
DECOMPDECOMP <addr>Alias de FUNC. Descompila la función objetivo.
DISASMDISASM <ea> [n]Devuelve líneas de desensamblado para [n] instrucciones comenzando desde <ea> (por defecto: 40).
FINDFIND <substr>Búsqueda insensible a mayúsculas en todos los símbolos y nombres de funciones que coincidan con <substr> (hasta 300 coincidencias).
EXPORTEXPORT [path]Exporta todos los símbolos no dummy, nombres mangled y demangled a un archivo de texto (por defecto: C:\Contexto\ida_names.txt).
HELPHELPDevuelve una lista JSON de todos los comandos disponibles soportados por el servidor.
QUITQUITCierra limpiamente la conexión del cliente y detiene el socket del servidor puente.

2. Referencias Cruzadas y Grafo de Llamadas

ComandoSintaxisDescripción
XREFXREF <addr>Lista todas las referencias cruzadas entrantes (llamadas de código, lecturas/escrituras de datos) dirigidas a <addr>.
XFROMXFROM <addr>Lista todas las referencias cruzadas salientes originadas desde <addr>.
CALLERSCALLERS <addr>Filtra las referencias entrantes para devolver solo sitios de llamada (incluyendo llamadas indirectas resueltas).
READERSREADERS <addr>Filtra las referencias entrantes para devolver solo instrucciones que leen desde <addr>.
WRITERSWRITERS <addr>Filtra las referencias entrantes para devolver solo instrucciones que escriben en <addr>.
DECOMP_XREFDECOMP_XREF <addr>Descompila en lote cada función llamadora de <addr> en una sola solicitud.
IMPORTXREFIMPORTXREF <name>Localiza todos los sitios de llamada en todo el binario para una API importada de Windows/C (por ejemplo, IMPORTXREF WSASendTo).
TRACETRACE <addr>Rastrea el flujo de ejecución y los bloques básicos que rodean <addr>.

3. Punteros, Memoria y Estructuras

ComandoSintaxisDescripción
READPTRREADPTR <addr> [count]Lee memoria como cadenas de punteros (32-bit o 64-bit) y clasifica cada objetivo (func, string, vtable).
FINDPTRFINDPTR <addr>Escanea datos globales y tablas para encontrar cualquier puntero que referencie <addr> (encuentra vtables, tablas de despacho).
STRUCTSTRUCT <addr> [n]Volcado heurístico de memoria contigua interpretando campos como ints, floats, punteros y strings.
DEFSTRUCTDEFSTRUCT <name> [size]Crea una nueva estructura nombrada en la librería de tipos de la base de datos.
SETFIELDSETFIELD <struct> <off> <type> [name]Define o modifica un campo de estructura en <off> con <type> y nombre de campo opcional.
MKPTRSMKPTRS <addr> [count]Convierte bytes crudos de la base de datos en punteros tipados de forma masiva.
NEARSTRNEARSTR <addr>Encuentra referencias a strings ubicadas cerca en secciones de código o datos dentro del rango.

4. Tablas Virtuales y RTTI

ComandoSintaxisDescripción
VTABLEVTABLE <funcaddr>Identifica qué tablas virtuales contienen <funcaddr>, incluyendo slots de métodos vecinos.
VTDUMPVTDUMP <addr> [count]Volcado completo de una tabla virtual: resuelve cada slot a su nombre de método, offset e índice.
RTTIRTTI <addr|Name>Recorre estructuras RTTI de MSVC C++ (TypeDescriptor -> CompleteObjectLocator -> vftable) para resolver jerarquías de clases y clases base.

5. Escaneo de Strings y Bytes

ComandoSintaxisDescripción
STRSTR <ascii>Busca strings ASCII en todos los segmentos cargados.
WSTRWSTR <utf16>Busca strings anchos UTF-16 en todos los segmentos cargados.
BYTESBYTES <hex>Busca secuencias de bytes de opcode o datos crudos (por ejemplo, BYTES 55 8B EC 83 EC).

6. Modificación de Base de Datos y Tipado

Descargar herramienta