> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/docs/ingenieria-inversa/ghidra.md).

# Ghidra

## Introducción

**Ghidra** es una herramienta de **ingeniería inversa de software** desarrollada y publicada por la **NSA**. Fue liberada como software libre en 2019 y rápidamente se convirtió en una de las herramientas más populares para analizar binarios, malwares, firmware y todo tipo de ejecutables.

Es completamente **gratuita y multiplataforma**, y rivaliza con gigantes como **IDA Pro**, con la ventaja de contar con una interfaz moderna, un decompilador integrado y soporte para scripting.

***

## Características clave

* Soporte para múltiples arquitecturas (x86, x64, ARM, MIPS, PowerPC, etc).
* Decompilador de alto nivel (convierte ASM a pseudocódigo C).
* Análisis estático, simbólico y referencial.
* Reconocimiento automático de funciones, strings, llamadas y estructuras.
* GUI completa e intuitiva.
* Scripting con Python o Java.
* Desempaquetado y análisis de malware.

***

## Instalación

1. Descargar desde la web oficial:\
   <https://ghidra-sre.org>
2. Requiere tener **Java 17 o superior** instalado. En Debian/Parrot:

```bash
sudo apt install openjdk-17-jdk
```

3. Descomprime el archivo descargado y lanza Ghidra:

```bash
./ghidraRun
```

***

## Primeros pasos

#### 1. Crear un proyecto nuevo

* Al abrir Ghidra, elige "Non-Shared Project" para empezar de forma local.
* Ponle un nombre y selecciona la carpeta donde se almacenará.

#### 2. Importar binario

* Haz clic derecho en el área del proyecto → **Import File**
* Selecciona tu ejecutable `.exe`, `.elf`, `.bin`, etc.

#### 3. Análisis automático

Al importar un binario, Ghidra te preguntará si quieres realizar un **auto-análisis**. Activa todas las opciones si quieres un análisis profundo (recomendado).

***

## Explorando el binario

Una vez cargado el binario y analizado:

* Usa el **Symbol Tree** para navegar por funciones, strings, variables globales y más.
* Haz doble clic en `main` (si existe) para abrir el código desensamblado.
* En el panel derecho verás:
  * ASM (código máquina)
  * Pseudocódigo C (decompiler)
  * Registros, referencias cruzadas, etc.

***

## Decompilación de funciones

Ghidra incluye un **decompilador integrado** que convierte ensamblador en pseudocódigo C, facilitando enormemente el análisis.

Por ejemplo, una función en ASM:

```asm
MOV EAX, 0x0
CALL printf
```

En el decompiler se verá así:

```c
printf("Hello world");
return 0;
```

Esto es extremadamente útil para comprender lógicas rápidamente.

***

## Uso en reversing y cracking

Ghidra es muy usada para:

* Revertir **malware** y encontrar *payloads*.
* Analizar **crackmes** para encontrar validaciones o licencias.
* Extraer secretos embebidos en firmware.
* Buscar funciones vulnerables o rutas de ejecución.

Puedes **marcar funciones, añadir comentarios, renombrar símbolos** y documentar todo el análisis fácilmente.

***
