GhidraDev is an Eclipse plugin that provides integrated development and debugging support for Ghidra scripts and modules within the Eclipse IDE. The plugin facilitates creating, linking, launching, and exporting Ghidra projects, enabling developers to work with Ghidra's codebase using Eclipse's standard Java development tools. This page covers the plugin's architecture, project creation wizards, launch configurations, and integration points with Ghidra installations.
For information about Ghidra's build system infrastructure, see 7.1 Gradle Build System For details on launch configuration and JVM setup, see 7.3 Launch Configuration and Application Properties
GhidraDev is packaged as an Eclipse plugin bundle with the following structure:
| Component | Purpose |
|---|---|
GhidraDevPlugin | Core plugin implementation containing wizards, utilities, and launchers. |
GhidraDevFeature | Eclipse feature wrapper for plugin distribution. |
META-INF/MANIFEST.MF | OSGi bundle manifest declaring dependencies and metadata. |
plugin.xml | Eclipse extension point contributions (wizards, launchers, commands). |
The plugin requires Eclipse 2023-12 (4.30) or later, JDK 21, and declares dependencies on Eclipse JDT, debug UI, and build infrastructure GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/META-INF/MANIFEST.MF1-37 PyDev 9.3.0+ integration is optional but required for Python/PyGhidra support GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/README.md141-149
Sources: GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/META-INF/MANIFEST.MF1-37 GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/README.md141-149 GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevFeature/feature.xml1-50
The GhidraDev architecture bridges the Eclipse platform with Ghidra's installation layout and internal application properties.
Title: GhidraDev System Components
Sources: GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraProjectUtils.java49-132 GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraModuleUtils.java39-64
GhidraDev supports two primary project types, each with dedicated creation wizards:
Script projects provide a lightweight development environment for single-file Ghidra scripts. The CreateGhidraScriptProjectWizard creates projects that link to script directories, typically defaulting to ~/ghidra_scripts.
Title: Script Project Creation Data Flow
Sources: GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/README.md98-101 GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraProjectUtils.java91-106
Module projects support complex extensions. The createGhidraModuleProject method in GhidraModuleUtils defines the standard source and output directory mapping for Eclipse compatibility GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraModuleUtils.java91-117
| Source Directory | Output Directory | Purpose |
|---|---|---|
src/main/java | bin/main | Java source code |
src/main/help | bin/main | Help documentation |
src/main/resources | bin/main | Resource files |
src/test/java | bin/test | Test source code |
ghidra_scripts | bin/scripts | Project-specific scripts |
The ModuleTemplateType enum defines the available templates: ANALYZER, PLUGIN, LOADER, FILESYSTEM, EXPORTER, and PROCESSOR GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraModuleUtils.java41-64
The GhidraProjectUtils class provides the logic for determining if an Eclipse project is a Ghidra-related project and managing its dependencies.
isGhidraProject(IProject): Returns true if the project is a Java project and contains a folder named Ghidra GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraProjectUtils.java104-106isGhidraModuleProject(IProject): Returns true if it is a Ghidra project and contains a Module.manifest file GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraProjectUtils.java114-117Key validation occurs in GhidraProjectCreatorPreferencePage.validateGhidraInstallation():
GhidraApplicationLayout can be initialized from the directory GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/preferences/GhidraProjectCreatorPreferencePage.java210certification.local.manifest GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/preferences/GhidraProjectCreatorPreferencePage.java215Sources: GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraProjectUtils.java49-132 GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/preferences/GhidraProjectCreatorPreferencePage.java207-216
Ghidra projects are launched using specialized Eclipse launch configurations (e.g., GhidraGuiLaunchConfigurationType) that configure the JVM environment specifically for Ghidra's classloader GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraLaunchUtils.java45-63
The plugin ensures that Ghidra is launched with Utility.jar on the initial classpath GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/README.md56-59
Title: Ghidra Launch Attributes
| Attribute | Code Symbol | Purpose |
|---|---|---|
| Program Arguments | ATTR_PROGAM_ARGUMENTS | Appended to required Ghidra launch args GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraLaunchUtils.java70 |
| VM Arguments | ATTR_VM_ARGUMENTS | Appended to required JVM args, including -Xmx GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraLaunchUtils.java77 |
| Main Type | Ghidra.class | The standard Ghidra entry point GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraLaunchUtils.java157-158 |
Sources: GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraLaunchUtils.java41-183 GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/README.md56-59
GhidraDev integrates with PyDev to provide development support for PyGhidra and Jython scripts.
The PyDevUtils class manages the interaction with PyDev's interpreter manager. It supports two main types: PYGHIDRA and JYTHON GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/PyDevUtils.java48-52
Title: Python Support Integration
The plugin enforces version compatibility, requiring PyDev 9.3.0 or later GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/PyDevUtils.java42-43 It can automatically add the Jython interpreter found in the Ghidra installation directory to PyDev GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/README.md124-126
Sources: GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/PyDevUtils.java40-136 GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/README.md124-126
While primarily focused on Java/Python development, the Ghidra ecosystem includes the GhidraSleighEditor Eclipse plugin (referenced in documentation requirements) for Sleigh language support. This allows developers to edit .slaspec and .sinc files with syntax highlighting and basic IDE features.
Module projects that include a PROCESSOR template will automatically include Sleigh-related files like buildLanguage.xml and sleighArgs.txt GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraModuleUtils.java147-151
Sources: GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraModuleUtils.java145-156 GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/README.md15-22
Refresh this wiki