Skip to main content

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 the GhidraScript 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

  1. Set up Ghidra in Eclipse
  2. Set breakpoints in your script
  3. Run Ghidra in debug mode
  4. Execute script from Script Manager

Exception Handling

Performance Tips

  1. Use transactions wisely - Batch changes in single transaction
  2. Check monitor - Allow user cancellation with monitor.isCancelled()
  3. Cache lookups - Store frequently accessed objects
  4. Limit output - Excessive printing slows execution
  5. Use efficient iteration - Prefer iterators over index-based loops