Skip to main content
Find answers to commonly asked questions about Ghidra.

General Questions

Ghidra is a software reverse engineering (SRE) framework created and maintained by the National Security Agency Research Directorate. It includes a suite of full-featured, high-end software analysis tools that enable users to analyze compiled code on a variety of platforms including Windows, macOS, and Linux.Key capabilities include:
  • Disassembly
  • Assembly
  • Decompilation
  • Graphing
  • Scripting
  • And hundreds of other features
Host Platforms (where Ghidra runs):
  • Windows
  • macOS
  • Linux
Target Platforms (what Ghidra can analyze):
  • x86/x64
  • ARM/ARM64 (AARCH64)
  • MIPS
  • PowerPC
  • And many other processor architectures
Ghidra supports a wide variety of processor instruction sets and executable formats, and can be run in both user-interactive and automated modes.
Yes! Ghidra is released under the Apache License 2.0, making it free and open source software. You can:
  • Use it for any purpose (commercial or personal)
  • Modify the source code
  • Distribute it
  • Contribute improvements back to the project
Yes, the Apache License 2.0 allows commercial use. You can use Ghidra in commercial environments, including for security research, malware analysis, vulnerability research, and reverse engineering.

Installation and Setup

Minimum Requirements:
  • JDK 21 64-bit
  • 4 GB RAM (8 GB or more recommended)
  • 1 GB free disk space for installation
  • Additional space for projects and analysis databases
Operating Systems:
  • Windows 10 or later
  • macOS 10.14 or later
  • Modern Linux distributions
  1. Install JDK 21 64-bit from Eclipse Temurin
  2. Download a Ghidra release from GitHub Releases
  3. Extract the release file (don’t extract on top of an existing installation)
  4. Launch Ghidra:
    • Linux/macOS: ./ghidraRun
    • Windows: ghidraRun.bat
For detailed instructions, see the Getting Started document included with Ghidra.
Ghidra is a Java-based application that leverages modern Java features for performance, security, and functionality. JDK 21 is the current Long-Term Support (LTS) version required by Ghidra.
Make sure to install a 64-bit version of the JDK, as Ghidra requires it for analyzing large binaries.
Yes, you can have multiple Ghidra versions installed simultaneously. Each version should be extracted to its own directory. However, be aware that:
  • Projects created in newer versions may not be compatible with older versions
  • Extensions may need to be reinstalled for each version

Development and Building

See the Building Ghidra guide for complete instructions. In summary:
  1. Install build tools: JDK 21, Gradle 8.5+, Python 3.9-3.13
  2. Clone or download the source
  3. Run gradle -I gradle/support/fetchDependencies.gradle
  4. Run gradle prepdev
  5. Run gradle buildGhidra
The build will be in build/dist/.
For Core Ghidra Development:
  • Eclipse IDE is highly recommended (the development process is customized for Eclipse)
For Scripts and Extensions:
  • GhidraDev Eclipse plugin
  • Visual Studio Code (with Ghidra integration)
Both options support writing custom scripts and extensions against a built Ghidra installation.
Yes! If you have an Internet connection, you can use the Gradle wrapper included in the repository:
  • Linux/macOS: ./gradlew <task>
  • Windows: .\gradlew.bat <task>
The wrapper will automatically download the correct Gradle version.
To prepare for offline development:
gradle -I gradle/support/fetchDependencies.gradle
gradle -g dependencies/gradle prepdev
Then move the entire repository (including the dependencies/gradle directory) to your offline system. See the Building Ghidra guide for details.

Scripting and Extensions

Ghidra supports scripting in:
  • Java - Full access to Ghidra API
  • Python 3 - Via PyGhidra for modern Python scripting
  • Jython 2.7 - Legacy Python support within Ghidra GUI
Scripts can be created and managed through the Script Manager in the Ghidra GUI.
  1. Open Ghidra and launch the Script Manager (Window → Script Manager)
  2. Click the “Create New Script” button
  3. Choose your language (Java or Python)
  4. Write your script using the Ghidra API
  5. Save and run it from the Script Manager
For IDE support, use the GhidraDev Eclipse plugin or VS Code integration.
PyGhidra is a Python 3 package that enables native Python 3 scripting for Ghidra, outside of the Jython-based scripting within the GUI. It allows you to:
  • Use modern Python 3 features and libraries
  • Run Ghidra in headless mode from Python
  • Integrate Ghidra analysis into Python workflows
Launch PyGhidra with:
  • Linux/macOS: ./support/pyGhidraRun
  • Windows: support\pyGhidraRun.bat
  1. Download or build the extension (.zip file)
  2. Open Ghidra
  3. Go to File → Install Extensions…
  4. Click the green ”+” button
  5. Select the extension .zip file
  6. Click OK and restart Ghidra

Debugger

Ghidra includes built-in support for:
  • GDB (GNU Debugger) - Linux, macOS, Windows
  • LLDB - macOS, Linux, Windows
  • WinDbg (via dbgeng.dll) - Windows
The debugger uses a Trace RMI architecture that allows for extensibility.
Ghidra’s debugger uses a Trace RMI (Remote Method Invocation) protocol:
  • The debugger back-end runs in a separate process
  • It connects to Ghidra via a protobuf-based TCP connection
  • Machine state is recorded in a Trace database
  • The UI displays and allows interaction with the recorded state
This architecture prevents crashes in native code from affecting the Ghidra UI.
Yes! Ghidra provides out-of-the-box QEMU integration via GDB. You can:
  • Launch QEMU with GDB remote debugging enabled
  • Connect Ghidra to QEMU through the GDB connector
  • Debug emulated systems and architectures
Yes! The Trace RMI architecture is designed to be extensible. You can develop connectors for other debuggers by:
  • Using existing connectors (GDB, dbgeng) as templates
  • Implementing the Trace RMI client protocol
  • Mapping the debugger’s model to Ghidra’s trace database
See the Development Setup guide for details.

Multi-User and Collaboration

Yes! Ghidra includes a server component that allows:
  • Multiple users to work on the same project simultaneously
  • Shared analysis databases
  • Conflict resolution for concurrent edits
  • Version control for project data
The Ghidra Server can be set up to enable team-based reverse engineering.
The Ghidra Server is included in the distribution:
  • Linux/macOS: server/svrInstall
  • Windows: server\svrInstall.bat
Follow the server administration documentation included with Ghidra for detailed setup instructions.

Security and Updates

Ghidra includes security advisories for known vulnerabilities. Before using Ghidra:
  • Watch the GitHub repository for releases
  • Subscribe to release notifications
  • Check the Releases page regularly
  • Follow Ghidra on social media for announcements

Contributing

There are many ways to contribute:
  • Submit bug reports
  • Propose new features
  • Submit pull requests with fixes or improvements
  • Review other pull requests
  • Answer questions from other users
  • Improve documentation
  • Share your scripts and extensions
See the Contributing Guide for details.
Key guidelines:
  • Keep changes focused and minimal
  • Ensure the code compiles and runs
  • Avoid unnecessary refactoring or style changes
  • Squash commits before submission
  • Be prepared to answer reviewer questions
  • Be patient - reviews may take time
See the Contributing Guide for complete submission guidelines.

Getting Help

  • GitHub Issues: For bug reports and feature requests
  • GitHub Discussions: For questions and community discussion
  • Documentation: Included with Ghidra installation
  • Source Code: Read the code for detailed implementation information
  • Community: Connect with other users online
  1. Search existing issues to avoid duplicates
  2. Use the bug report template when creating a new issue
  3. Provide:
    • Ghidra version
    • Operating system
    • Steps to reproduce
    • Expected vs actual behavior
    • Any relevant error messages or logs

Build docs developers (and LLMs) love