Skip to content

¿Cuándo recurres a Ghidra o IDA frente a un depurador como x64dbg, y cómo se complementan?

Respuesta breve

Un desensamblador como Ghidra o IDA te da el mapa estático completo: referencias cruzadas, pseudocódigo decompilado y cada ruta de código se ejecute o no. Un depurador como x64dbg te permite ejecutar el ejemplar bajo control — poner breakpoints, inspeccionar registros y memoria, observar el descifrado ocurrir, y seguir la ruta que el código toma realmente con entradas reales. Se lee la estructura y la intención estáticamente, luego se adjunta el depurador para resolver lo que el análisis estático no puede: cadenas descifradas en tiempo de ejecución, APIs resueltas dinámicamente, cargas útiles empaquetadas y qué rama toma una condición. Los dos juntos cierran sus mutuas carencias.

La ingeniería inversa profunda ocurre en dos herramientas complementarias: un desensamblador/decompilador estático y un depurador en tiempo de ejecución. Los entrevistadores preguntan esto para ver si entiendes qué puede y qué no puede decirte cada uno, y que alternas entre ellos de forma deliberada en lugar de vivir en uno solo.

El desensamblador — el mapa

Ghidra (gratuito, de código abierto, con un sólido decompilador) e IDA Pro convierten el código máquina en ensamblador navegable y pseudocódigo decompilado. Su fuerza es la integridad y el contexto: referencias cruzadas (quién llama a esta función, quién lee esta global), el grafo de llamadas completo, la recuperación de tipos y cada rama expuesta — incluido código que nunca se ejecuta en una ejecución dada. Se usa el desensamblador para entender la estructura y la intención: qué hace una función, dónde se parsea la configuración, dónde vive la lógica C2. Se puede anotar, renombrar y crear scripts (scripts de Ghidra, IDAPython) para automatizar la desofuscación.

El depurador — la verdad sobre el terreno

Una vista estática se atasca con cualquier cosa resuelta en tiempo de ejecución. x64dbg (y WinDbg para el trabajo en kernel) permite ejecutar bajo control: breakpoints de software y hardware, inspección de memoria y registros, ejecución paso a paso y parcheo. Brilla justo en lo que el análisis estático no puede ver: cadenas descifradas en memoria, APIs resueltas dinámicamente vía GetProcAddress, cargas útiles desempaquetadas que solo existen después de ejecutar el stub, y qué rama toma realmente una comprobación con datos en vivo.

El flujo de trabajo

Leer estáticamente para construir un mapa mental y encontrar las funciones interesantes; poner breakpoints allí en x64dbg para observarlas con valores reales; devolver las observaciones (cadenas descifradas, direcciones de API resueltas) al desensamblador como anotaciones. Una respuesta sénior insiste en este bucle — lo estático para la amplitud, lo dinámico para la verdad en tiempo de ejecución que lo estático no puede alcanzar.

Posibles preguntas de seguimiento

  • ¿Cómo ayuda el decompilador de Ghidra a entender una función más rápido que el ensamblador en crudo?
  • ¿Qué tipos de breakpoints en x64dbg ayudan a capturar cadenas descifradas en tiempo de ejecución?
  • ¿Por qué el análisis estático por sí solo no puede resolver APIs importadas dinámicamente?

Fuentes

Certificaciones

Consigue 100 preguntas de entrevista de ciberseguridad + respuestas

Déjanos tu correo y te enviaremos el pack en PDF gratuito y el mazo de flashcards.

Sin spam. Cancela tu suscripción cuando quieras.