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.
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.
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
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
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
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
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

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.
leer contexto -> inspeccionar un objeto -> imprimir resultado -> no modificar -> repetirobjetivo: practice.bin | alcance: programa actual | escrituras: ninguna | resultado: 12 funciones
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.
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.
| Necesidad | Usa primero | Motivo |
|---|---|---|
| Una acción pequeña en un proyecto abierto | Script Manager | Respuesta rápida y contexto visible |
| Automatización Java reutilizable | Script Java | Coincide con el modelo de API nativo |
| Flujo CPython nativo | PyGhidra | Está diseñado para un proceso Python externo |
| Lote grande y repetible | Script con registro | Permite revisar entradas, salidas y fallos |
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.
contexto -> selección -> operación -> evidencia -> plan de reversiónResolver 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.
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íntoma | Comprobar primero | Siguiente acción segura |
|---|---|---|
| El script no aparece | Actualizar, ubicación, extensión y configuración de directorios | Recargar la lista y abrir el archivo directamente si el flujo lo permite |
| Python no está disponible | Cómo se inició Ghidra y si PyGhidra está configurado | Usar Java o seguir la frontera de PyGhidra en vez de adivinar |
| No hay programa o selección | Herramienta activa, proyecto, programa y selección | Abrir el programa y probar un caso de una función |
| La salida parece incorrecta | Arquitectura, direcciones, Listing y tipos | Verificar la suposición en CodeBrowser antes de editar el script |
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
Preparar
Fija la versión de Ghidra, abre una copia del proyecto y escribe el alcance previsto.
versión + entrada + alcance - 2
Observar
Ejecuta un script de solo lectura y conserva una muestra pequeña con direcciones.
primero solo lectura - 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
Conservar
Guarda el script, las notas, la salida y la copia del proyecto para comparar o revertir la ejecución.
script + registro + copia
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.