Ghidra Downloadguía independiente de descarga e instalación
Español
PROGRAMACIÓN CON GHIDRA

Administrador de scripts de Ghidra: Java, Python y automatización segura

El Administrador de scripts de Ghidra es la forma más rápida de localizar, editar y ejecutar pequeñas tareas de automatización dentro de un proyecto. Esta guía explica el flujo integrado, el límite actual de Python, los patrones de API más útiles y cómo distinguir el Script Manager de la automatización CPython nativa mediante PyGhidra.

Abrir la documentación oficial de scripting de Ghidra
Intención principalAdministrador de scripts
Versión actualGhidra 12.1.3
Mejor paraTareas pequeñas y repetibles
Límite de PythonPyGhidra para CPython
RESPUESTA RÁPIDA

Qué hace el Administrador de scripts de Ghidra

El Script Manager es el espacio integrado de Ghidra para buscar y lanzar scripts. Resulta útil cuando una misma inspección o tarea de limpieza aparece en muchos proyectos: listar funciones que coinciden con un patrón, renombrar símbolos de forma coherente, exportar datos seleccionados, añadir comentarios o recopilar evidencias para un informe. El resultado sigue siendo una acción normal de análisis, por lo que conviene revisarlo en CodeBrowser y confirmarlo en Listing o en el Decompiler.

Un script no sustituye la comprensión del binario. Trátalo como un experimento pequeño y revisable: define el proyecto objetivo, realiza el cambio mínimo, guarda una copia si la operación modifica datos y anota qué cambió. El mejor comienzo es un binario de práctica propio, una muestra de código abierto o un objetivo de formación autorizado. El tutorial de Ghidra para principiantes cubre el flujo de análisis estático; esta página se concentra en la automatización dentro de ese flujo.

Alcance y autorización

Analiza únicamente archivos y sistemas que tengas permiso para revisar. El Script Manager puede modificar un proyecto con rapidez: conserva copias y prueba primero sobre una copia.

  • Localizar scripts incluidos con Ghidra o guardados en tus directorios de scripts.
  • Abrir un script, revisar su lenguaje e imports y ejecutarlo sobre el programa activo.
  • Usar el modelo de programa y la consola para hacer un cambio pequeño y repetible.
  • Separar la automatización del Script Manager de la automatización CPython nativa con PyGhidra.
PASO 1

Abrir el Script Manager y encontrar un script

Abre un proyecto y activa el Script Manager desde los menús de herramientas de Ghidra. La ubicación exacta puede variar un poco según la herramienta y la versión, pero el espacio muestra una lista de scripts, filtros o búsqueda, un editor y acciones para ejecutar o actualizar la lista. Si acabas de copiar un script y no aparece, actualiza la lista antes de investigar el código.

Empieza con un script de solo lectura o de generación de informes. Lee los comentarios iniciales y los imports antes de pulsar Run. Un encabezado útil indica si necesita un programa abierto, una selección, una función actual o un procesador concreto. Si depende de una función seleccionada, selecciónala en Listing; si recorre todo el programa, espera más tiempo y más salida.

  1. 1

    Abrir un proyecto de práctica

    Crea o abre un proyecto no compartido e importa un binario que tengas permitido analizar. Conserva el archivo y una copia del proyecto sin modificar.

    File > New Project > Non-Shared Project
  2. 2

    Iniciar Script Manager

    Abre el espacio de scripting desde los menús de herramientas y utiliza el filtro o la búsqueda para reducir la lista.

    Window > Script Manager
  3. 3

    Revisar antes de ejecutar

    Comprueba el lenguaje, el contexto requerido, los imports, el destino de salida y si modifica símbolos, comentarios, tipos de datos o memoria.

    Leer encabezado e imports primero
  4. 4

    Ejecutar y revisar

    Ejecuta una vez sobre un objetivo pequeño, lee la consola y verifica el estado del programa en Listing o en el Decompiler.

    Run > Run Script
Ventana oficial de proyectos de Ghidra antes de abrir un flujo del Script Manager
Crea y respalda el proyecto antes de ejecutar automatización. Captura oficial de la ventana de proyectos de Ghidra.
PASO 2

Escribir un primer script pequeño y con un límite claro

El primer script debe responder una sola pregunta. Por ejemplo, contar funciones, imprimir nombres con un prefijo, listar cadenas definidas o informar de la selección actual. Evita combinar análisis, renombrado, exportación y limpieza en el primer intento. Un script limitado es más fácil de revisar y de volver a ejecutar después de cerrar y abrir el proyecto.

Usa el modelo de programa que Ghidra ofrece a los scripts en vez de extraer datos de la interfaz visible. En la práctica, esto significa pedir al programa funciones, símbolos, referencias, instrucciones o bloques de memoria y enviar un resultado corto a la consola. Consulta la referencia de la API GhidraScript para confirmar nombres y métodos; no des por hecho que un ejemplo antiguo de un foro funciona igual en tu versión.

Cuando un script modifica el programa, haz que el cambio quede claro en la salida. Imprime un conteo antes y después, incluye la dirección o el nombre del símbolo y detente ante un estado inesperado en lugar de continuar en silencio. Así una ejecución por lotes es auditable y puedes distinguir un error del script de una suposición incorrecta del análisis.

Lista de comprobación para el primer scriptleer contexto -> inspeccionar un objeto -> imprimir resultado -> no modificar -> repetir
Nota de ejecución útilobjetivo: practice.bin | alcance: programa actual | escrituras: ninguna | resultado: 12 funciones
CodeBrowser oficial de Ghidra para verificar el resultado de un script en Listing y Decompiler
Revisa la salida en el espacio de análisis visible y no confíes solo en el texto de la consola. Captura oficial de CodeBrowser.
ELECCIÓN DE LENGUAJE

Java, Python y el límite de Ghidra 12.1.3

Los datos de búsqueda mezclan scripting de Ghidra, scripts de Ghidra y Python para Ghidra, aunque no siempre describen el mismo entorno. El Script Manager es el punto de entrada dentro de la aplicación. Los scripts Java son la opción más clara para una automatización que debe usar las API Java de Ghidra y compartirse con un equipo. Python puede ser cómodo, pero su disponibilidad depende de cómo se inició el proceso de Ghidra y de la integración instalada.

Para automatización con CPython nativo fuera de la ventana de scripts, consulta la guía de instalación de PyGhidra. PyGhidra es una frontera distinta: conecta un proceso CPython con la API de Ghidra, mientras que un script del Script Manager se ejecuta en el contexto de la aplicación. Si la consola dice que Python no está disponible porque Ghidra no se inició con PyGhidra, trátalo como un mensaje de configuración del entorno, no como una prueba de que la lógica del script está mal.

No conviertas un desajuste de runtime en una reescritura

Primero identifica dónde se ejecuta el script: Script Manager integrado, un proceso de Ghidra iniciado con PyGhidra o un proceso CPython externo. Después elige la documentación y los pasos de diagnóstico para ese entorno.

NecesidadUsa primeroMotivo
Una acción pequeña en un proyecto abiertoScript ManagerRespuesta rápida y contexto visible
Automatización Java reutilizableScript JavaCoincide con el modelo de API nativo
Flujo CPython nativoPyGhidraEstá diseñado para un proceso Python externo
Lote grande y repetibleScript con registroPermite revisar entradas, salidas y fallos
FLUJO DE TRABAJO

Patrones útiles del Script Manager en proyectos reales

Un script útil suele tener cuatro partes: establecer el contexto, seleccionar un conjunto pequeño de objetos, realizar una operación y explicar qué ocurrió. El contexto puede ser el programa actual, la ubicación actual, la selección o la función activa. La selección debe ser explícita: un filtro por nombre, un rango de direcciones, un bloque de memoria, una propiedad de función o un conjunto de referencias. La operación puede ser un informe, un renombrado, un comentario, un tipo de datos o una exportación.

Haz que la salida tenga una estructura que permita comparar dos ejecuciones. Un resumen de una línea ayuda, pero una línea por elemento con dirección o nombre de símbolo es mejor para depurar. Si el script es lento, imprime un marcador de progreso y pruébalo primero sobre una función o bloque de memoria. Para un informe, exporta identificadores estables y conserva el proyecto original para que otro analista pueda reproducir el resultado.

  • Lee el programa y la ubicación actuales antes de pedir un estado global.
  • Prefiere un iterador o selección acotada frente a un recorrido sin límite.
  • Trata direcciones, símbolos y tipos de datos como evidencias que deben verificarse en Listing.
  • Separa el descubrimiento de solo lectura de las operaciones de escritura.
  • Guarda una copia antes de renombrar, cambiar tipos o generar comentarios en masa.
Modelo mental repetiblecontexto -> selección -> operación -> evidencia -> plan de reversión
SOLUCIÓN DE PROBLEMAS

Resolver problemas comunes de scripting en Ghidra

Cuando un script falla, captura primero el mensaje exacto y el contexto del runtime. Anota la versión de Ghidra, el sistema operativo, el lenguaje del script, si hay un programa abierto, si existe una selección y cómo se inició el proceso. Este registro evita un error frecuente: aplicar una solución de PyGhidra a un problema del Script Manager o cambiar imports Java cuando el problema real es que Python no está disponible.

Comprueba también el caso mínimo que reproduce el fallo. Un script que solo falla con un procesador, una función dañada o una selección vacía necesita una condición de borde, no una reescritura general. Después del arreglo, repite el mismo caso y compara la salida con la evidencia original.

Conserva la evidencia del error

Guarda el texto completo, el archivo o copia mínima que reproduce el fallo y la versión del script. No publiques binarios desconocidos ni datos sensibles de análisis en una incidencia.

SíntomaComprobar primeroSiguiente acción segura
El script no apareceActualizar, ubicación, extensión y configuración de directoriosRecargar la lista y abrir el archivo directamente si el flujo lo permite
Python no está disponibleCómo se inició Ghidra y si PyGhidra está configuradoUsar Java o seguir la frontera de PyGhidra en vez de adivinar
No hay programa o selecciónHerramienta activa, proyecto, programa y selecciónAbrir el programa y probar un caso de una función
La salida parece incorrectaArquitectura, direcciones, Listing y tiposVerificar la suposición en CodeBrowser antes de editar el script
LISTA DE COMPROBACIÓN

Una rutina segura y repetible para hacer scripting

Para una tarea puntual, la rutina puede ser corta. Para un equipo o una investigación repetida, registra la entrada, el resultado esperado, la revisión del script, la versión de Ghidra y si el script cambia el proyecto. Esto es especialmente importante al pasar de un informe exploratorio a un renombrado masivo o a una operación sobre tipos de datos. La guía del Decompiler ayuda a verificar el resultado, y la guía de instalación explica cómo separar la aplicación, el JDK, los proyectos y las copias de seguridad.

Empieza con una salida de solo lectura, compárala con Listing y solo después habilita cambios. Conserva un conteo antes y después y un plan de reversión o una copia del proyecto. Si el script acaba convirtiéndose en un sistema de automatización con entradas externas, pruebas y una dependencia CPython, deja de ampliar el archivo del Script Manager y evalúa PyGhidra o un arnés dedicado.

  1. 1

    Preparar

    Fija la versión de Ghidra, abre una copia del proyecto y escribe el alcance previsto.

    versión + entrada + alcance
  2. 2

    Observar

    Ejecuta un script de solo lectura y conserva una muestra pequeña con direcciones.

    primero solo lectura
  3. 3

    Cambiar

    Realiza una modificación controlada, informa del conteo y verifica el resultado en las vistas de análisis.

    una operación + evidencia
  4. 4

    Conservar

    Guarda el script, las notas, la salida y la copia del proyecto para comparar o revertir la ejecución.

    script + registro + copia
PREGUNTAS FRECUENTES

Dudas sobre el Administrador de scripts de Ghidra

¿Qué es el Administrador de scripts de Ghidra?

Es el espacio integrado de Ghidra para descubrir, editar y ejecutar scripts sobre el proyecto o programa activo. Está pensado para automatizaciones pequeñas y revisables, y no es lo mismo que un proceso CPython externo.

¿Puedo usar Python en el Script Manager?

La disponibilidad de Python depende del runtime y de cómo se inició Ghidra. Si la aplicación indica que Python no está disponible, no supongas que el script está roto: usa Java para automatización integrada o sigue la guía de PyGhidra para un flujo CPython.

¿El scripting de Ghidra es lo mismo que PyGhidra?

No. El Script Manager se ejecuta dentro de Ghidra, mientras que PyGhidra conecta un proceso CPython nativo con la API de Ghidra. Sus instalaciones y diagnósticos son diferentes.

¿Por qué mi script no aparece en la lista?

Actualiza la lista, comprueba la extensión, el directorio de scripts y los filtros de lenguaje. Si sigue sin aparecer, abre el archivo directamente cuando sea posible y revisa que el encabezado y los imports correspondan a la versión actual.

¿Debe modificar un proyecto el primer script?

Es mejor comenzar con un informe de solo lectura. Cuando la salida coincida con la evidencia de Listing o Decompiler, prueba un cambio controlado sobre una copia, registra el conteo y conserva un plan de reversión.