Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
decomp2dbg — Un plugin para introducir símbolos interactivos en tu depurador desde tu descompilador | Kitploit
Herramientas/GitHubGitHub/mahaloz/decomp2dbg
Análisis EstáticoAnálisis Dinámico (Sandboxing)Ingeniería InversaDepuradoresAnálisis de BinariosExplotación de Binarios
GitHubmahaloz/decomp2dbg

decomp2dbg

Un plugin para introducir símbolos interactivos en tu depurador desde tu descompilador

Ver Repositorio
812484hace 1 mesRevisado por Kitploit

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

decomp2dbg

La ingeniería inversa implica análisis tanto estático (descompilador) como dinámico (depurador), pero a menudo usamos estos análisis sin compartir conocimiento entre ellos. En el caso de hacer ingeniería inversa de binarios estáticos, el cambio de contexto entre el ensamblador del depurador y los símbolos que has recuperado en la descompilación puede ser ineficiente.

decomp2dbg busca acortar la brecha del cambio de contexto entre descompilador y depurador al introducir una API genérica para la sincronización de símbolos entre descompilador y depurador. En efecto, le da al ingeniero inverso el poder de su depurador con los símbolos y las líneas de descompilación que recupera en su descompilador.

decomp2dbg

¿Interesado en ver cómo se ve decomp2dbg en la práctica? Mira la charla grabada en CactusCon 2023, donde se depura un binario arm32 remoto desde una máquina x64 con símbolos de Ghidra.

Para ayuda activa, únete al Discord de BinSync a continuación, donde respondemos preguntas sobre decomp2dbg:

Discord

Plataformas compatibles

Descompiladores

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

    • gdb
      • GEF
      • pwndbg
      • vanilla

    Instalación

    Instala a través de pip, luego usa el instalador integrado para los descompiladores:

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

    Esto abrirá un mensaje donde se te pedirá ingresar la ruta a tu descompilador y depurador de elección. Para Ghidra, necesitarás iniciar en modo PyGhidra y habilitar el plugin (d2d_client.py), como se muestra aquí. Si instalaste la parte del descompilador a través del Administrador de Plugins de Binja, aún necesitas instalar la parte del depurador con lo anterior. Nota: debes instalar decomp2dbg en el mismo entorno de Python que tu descompilador y depurador.

    Nota: Puede que necesites permitir conexiones entrantes en el puerto 3662, o el puerto que uses, para que decomp2dbg se conecte al descompilador. Si estás instalando decomp2dbg con GEF o pwndbg, es importante que en tu ~/.gdbinit el archivo d2d.py se cargue después de GEF o pwndbg.

    Instalación manual

    Omite esto si pudiste usar la instalación anterior sin errores. Si no puedes usar el script integrado (instalación de Windows sin WSL para el descompilador), sigue los pasos a continuación:

    Si solo necesitas la parte del descompilador, copia el plugin de descompilador asociado a la carpeta de plugins del descompilador. Así es como se hace en IDA:

    Primero, clona el repositorio:

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

    Instala:

    root@kitploit:~
    pip install .
    

    Copia el archivo del servidor:

    root@kitploit:~
    cp ./decomp2dbg/d2d_server.py /ruta/a/plugins/ida/
    

    Si también necesitas instalar la parte de gdb, usa la siguiente línea:

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

    Uso

    Primero, inicia el servidor de descompilación en tu descompilador. Puede que desees esperar hasta que tu descompilador termine su análisis normal antes de iniciarlo. Después del análisis normal, esto se puede hacer usando la tecla de acceso rápido Ctrl-Shift-D, o seleccionando la pestaña decomp2dbg: configure en la pestaña de plugins asociada. Después de iniciar el servidor, deberías ver un mensaje en tu descompilador:

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

    A continuación, en tu depurador, ejecuta:

    root@kitploit:~
    decompiler connect <nombre_del_descompilador>
    

    Si estás ejecutando el descompilador en una máquina virtual o en otra máquina, puedes proporcionar opcionalmente el host y el puerto para conectarte. Aquí hay un ejemplo:

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

    Puedes descubrir cómo usar todos los comandos ejecutando el comando del descompilador con la bandera --help.

    La primera conexión puede tardar hasta 30 segundos en registrarse, dependiendo de la cantidad de globales en el binario. Si todo está bien, deberías ver:

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

    Si estás usando decomp2dbg para una librería, es decir, el binario principal al que tu depurador se adjuntó no es el binario del que quieres el código fuente, entonces deberías echar un vistazo a la sección Advanced Usage - Shared Libs del readme.

    Vista de descompilación

    En cada evento de punto de interrupción, ahora verás la descompilación impresa y la línea en la que te encuentras asociada con la dirección de interrupción.

    Funciones y Variables Globales

    Las funciones y variables globales de tu descompilación ahora están mapeadas en tu GDB como símbolos normales a nivel de código fuente. Esto significa que los comandos normales de GDB como imprimir y examinar son nativos:

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

    Variables de pila, Variables de registro, Argumentos de función

    Algunas variables que se almacenan localmente en una función son variables de pila. Para las variables que se pueden mapear a la pila o los registros, las importamos como variables de conveniencia. Puedes ver su contenido como una variable de conveniencia normal de GDB:

    root@kitploit:~
    p $v4
    

    Las variables de pila siempre almacenarán su dirección en la pila. Para ver qué valor hay realmente en esa variable de pila, simplemente desreferencia la variable:

    root@kitploit:~
    x $v4
    

    Esto también funciona con los argumentos de función si corresponde (los resultados pueden variar):

    root@kitploit:~
    p $a1
    

    Nota: $v4 en este caso solo se mapeará mientras estés en la misma función. Una vez que salgas de la función, puede desmapearse o reasignarse a otro valor.

    Uso avanzado

    Bibliotecas Compartidas

    Cuando quieras que se muestre la descompilación (y los símbolos) para una sección de memoria que no es el binario principal, como al depurar una biblioteca compartida, necesitas seguir algunos pasos adicionales. Actualmente, d2d solo admite 1 descompilador conectado a la vez, lo que significa que si tienes algún descompilador conectado que no sea la biblioteca, debes desconectarlo.

    Después de seguir la configuración normal para que tu descompilador ejecute el servidor d2d para tu biblioteca compartida, debes establecer manualmente la dirección base de esta biblioteca y su dirección final:

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

    Para encontrar la dirección base en la que tu biblioteca está cargada en memoria, se recomienda usar algo como el comando vmmap de GEF para buscar el nombre de la biblioteca en el espacio de memoria. Después de conectarte con esta dirección establecida manualmente, los símbolos funcionarán como en d2d normal. La descompilación solo se imprimirá en la pantalla cuando estés en el rango de este espacio de direcciones.

    Características

    • Vista de contexto de descompilación con actualización automática
    • Sincronización automática de nombres de funciones
    • Símbolos interrumpibles/inspectables
    • Sincronización automática de nombres de variables de pila
    • Sincronización automática de estructuras
    • Creación de DWARF en línea
    • Sincronización de tipos de funciones
    • Soporte para lldb
    • Soporte para windbg
    Descargar herramienta