Introduction
Java is the primary scripting language for Ghidra, providing full access to the Ghidra API with complete type safety and IDE support. GhidraScripts extend theGhidraScript class, which itself extends FlatProgramAPI.
Creating a Java Script
Basic Template
Every GhidraScript follows this structure:Script Metadata
Use special comments to provide metadata:GhidraScript Class Hierarchy
FlatProgramAPI
Provides simplified methods for common operations:- Address manipulation
- Memory access
- Function operations
- Symbol management
- Data type operations
GhidraScript
Adds scripting-specific features:- User interaction (ask methods)
- Output methods (print/println)
- State variables
- Script arguments
Core API Methods
Address Operations
Memory Access
Listing Operations
Function Operations
Symbol Operations
Comments
References
User Interaction
Ask Methods
GhidraScript provides numerous methods for user input:Output Methods
Real Script Examples
Example 1: Add Comment
Source:AddCommentToProgramScript.java
Example 2: Auto Rename Labels
Source:AutoRenameLabelsScript.java
Example 3: Export Function Info
Source:ExportFunctionInfoScript.java
Advanced Topics
Decompiler Integration
Analysis Control
Script Arguments
Debugging Scripts
Console Output
Use print statements liberally:Eclipse Debugging
- Set up Ghidra in Eclipse
- Set breakpoints in your script
- Run Ghidra in debug mode
- Execute script from Script Manager
Exception Handling
Performance Tips
- Use transactions wisely - Batch changes in single transaction
- Check monitor - Allow user cancellation with
monitor.isCancelled() - Cache lookups - Store frequently accessed objects
- Limit output - Excessive printing slows execution
- Use efficient iteration - Prefer iterators over index-based loops
