ghidra Documentation

Ghidra is a software reverse engineering (SRE) framework

72,240 stars Java Java 1 file ยท ~2,189 tokens #disassembler#reverse-engineering#software-analysis
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy ghidra on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name ghidra --restart always nationalsecurityagency/ghidra:latest

1. Project Overview & Quickstart (NationalSecurityAgency/ghidra)

Ghidra Software Reverse Engineering Framework

Ghidra is a software reverse engineering (SRE) framework created and maintained by the
National Security Agency Research Directorate. This framework 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. Capabilities include disassembly,
assembly, decompilation, graphing, and scripting, along with hundreds of other features. Ghidra
supports a wide variety of processor instruction sets and executable formats and can be run in both
user-interactive and automated modes. Users may also develop their own Ghidra extension components
and/or scripts using Java or Python.

In support of NSA's Cybersecurity mission, Ghidra was built to solve scaling and teaming problems
on complex SRE efforts, and to provide a customizable and extensible SRE research platform. NSA has
applied Ghidra SRE capabilities to a variety of problems that involve analyzing malicious code and
generating deep insights for SRE analysts who seek a better understanding of potential
vulnerabilities in networks and systems.

If you are a U.S. citizen interested in projects like this, to develop Ghidra and other
cybersecurity tools for NSA to help protect our nation and its allies, consider applying for a
career with us.

Security Warning

WARNING: There are known security vulnerabilities within certain versions of Ghidra. Before
proceeding, please read through Ghidra's Security Advisories for a better understanding
of how you might be impacted.

Install

To install an official pre-built multi-platform Ghidra release:

  • Install JDK 21 64-bit
  • Download a Ghidra release file
    • NOTE: The official multi-platform release file is named
      ghidra_<version>_<release>_<date>.zip which can be found under the "Assets" drop-down.
      Downloading either of the files named "Source Code" is not correct for this step.
  • Extract the Ghidra release file
    • NOTE: Do not extract on top of an existing installation
  • Launch Ghidra: ./ghidraRun (ghidraRun.bat for Windows)
    • or launch PyGhidra: ./support/pyghidraRun (support\pyghidraRun.bat for Windows)

For additional information and troubleshooting tips about installing and running a Ghidra release,
please refer to the Getting Started document which can be found at the root of a
Ghidra installation directory.

Build

Build Ghidra

To create the latest development build for your platform from this source repository:

Install build tools:

Download and extract the source:

Download from GitHub

text
unzip ghidra-master
cd ghidra-master

NOTE: Instead of downloading the compressed source, you may instead want to clone the GitHub

Download additional build dependencies into source repository:

NOTE: If an Internet connection is available and you did not install Gradle, the
./gradlew (or gradlew.bat) command may be used in place of the gradle command in the following
instructions.

text
gradle -I gradle/support/fetchDependencies.gradle

Create development build:

text
gradle buildGhidra

The compressed development build will be located at build/dist/.

For more detailed information on building Ghidra, please read the Developer's Guide.

For issues building, please check the Known Issues section for possible solutions.

Develop

User Scripts and Extensions

Ghidra installations support users writing custom scripts and extensions via the GhidraDev plugin
for Eclipse. The plugin and its corresponding instructions can be found within a Ghidra release at
Extensions/Eclipse/GhidraDev/ or at this link. Alternatively, Visual Studio Code may
be used to edit scripts by clicking the Visual Studio Code icon in the Script Manager.
Fully-featured Visual Studio Code projects can be created from a Ghidra CodeBrowser window at
Tools -> Create VSCode Module project.

NOTE: Both the GhidraDev plugin for Eclipse and Visual Studio Code integrations only support
developing against fully built Ghidra installations which can be downloaded from the
Releases page.

Advanced Development

To develop the Ghidra tool itself, it is highly recommended to use Eclipse, which the Ghidra
development process has been highly customized for.

Install build and development tools:

Prepare the development environment:

text
gradle prepdev eclipse buildNatives

Import Ghidra projects into Eclipse:

  • File -> Import...
  • General | Existing Projects into Workspace
  • Select root directory to be your downloaded or cloned ghidra source repository
  • Check Search for nested projects
  • Click Finish

When Eclipse finishes building the projects, Ghidra can be launched and debugged with the provided
Ghidra Eclipse run configuration.

For more detailed information on developing Ghidra, please read the Developer's Guide.

Contribute

If you would like to contribute bug fixes, improvements, and new features back to Ghidra, please
take a look at our Contributor's Guide to see how you can participate in this open
source project.

2. Official Technical Reference & Guides (NationalSecurityAgency/NationalSecurityAgency.github.io)

code.nsa.gov

Build Status Apache License

This Site Was built by using the 18F/uswds Jekyll theme. For more information
visit U.S. Web Design System.

You can view the original theme and documentation
HERE.

Useful page edit information for maintainers and contributors:

  • The pages/index.md file can be edited to change the sites main image as
    well as edit the featured repo. From the same file tagline and page intro can
    also be changed.
  • The data/navigation.yml file can be edited to change the secondary and
    primary links for the header as well as the links present in the footer.
  • The data/header.yml file can be edited to add or remove the top usa-banner,
    the logo image and link information.
  • The data/footer.yml file can be edited to change the footer heading,
    contact information, social links, footer logo and return to top link.
  • The data/temp.json file can be edited to add in a repository that exists
    outside of NSAcyber or
    nationalsecurityagency GitHub
    orgs.