Library / SDK
NationalSecurityAgency/ghidra avatar
NationalSecurityAgency/ghidra

Ghidra: the NSA's open source reverse engineering framework, and what it costs you to run it

Ghidra, from the NSA Research Directorate, is a software reverse engineering framework with disassembly, decompilation, graphing, and scripting across many processors.

79,931 stars8,908 forksJavaApache-2.0

At a glance

What is it?
Ghidra is a Java-based software reverse engineering suite released by the NSA under Apache-2.0. It covers disassembly, decompilation, graphing and scripting across Windows, macOS and Linux, and it installs from a prebuilt ZIP rather than a package manager.
Who is it for?
Adopt Ghidra if you need a scriptable, extensible analysis platform that runs on Windows, macOS and Linux without a licence fee, and if you are willing to keep a JDK 21 install alongside it. Do not adopt it if you expect a package manager to place it on your PATH, or if you need a vendor to answer a support ticket.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Ghidra is for, and who actually needs it

Ghidra is a software reverse engineering framework built by the National Security Agency Research Directorate. The README describes it as a suite of analysis tools that let users examine compiled code on Windows, macOS and Linux, with disassembly, assembly, decompilation, graphing and scripting among the capabilities. It handles a wide range of processor instruction sets and executable formats.

The audience is narrower than the download numbers suggest. The README says Ghidra was built to solve scaling and teaming problems on complex reverse engineering efforts, and that the NSA has applied it to analyzing malicious code and finding potential vulnerabilities. That is a description of a platform for analysts working on binaries that resist casual inspection: stripped executables, firmware images, malware samples, or proprietary libraries where no source is available.

If you only need to check whether a binary imports a suspicious symbol, a one-line grep or a strings pass will do, and Ghidra is overkill. The framework earns its keep when you need to follow control flow across functions, rename symbols that a compiler discarded, and keep that work reproducible for someone else on your team. The keyword there is teaming: the design assumes more than one person will touch the same analysis.

The mechanism: a Java platform with a decompiler and a script layer

The repository is predominantly Java, with a top-level layout that separates the framework itself (Ghidra/) from build logic (GhidraBuild/, gradle/, build.gradle), documentation (GhidraDocs/) and a docker/ directory. Native components exist too, which is why the README lists GCC or Clang and make for Linux and macOS, and MSVC, the Windows SDK and C++ ATL for Windows.

Two things matter for how you work with it. First, analysis is interactive or automated: the README states Ghidra can run in both user-interactive and automated modes, which is where the headless path comes from. Second, the extension surface is real. Users can write custom scripts and components in Java or Python, and the Script Manager can open a file in Visual Studio Code. There is also a GhidraDev plugin for Eclipse, shipped inside a release at Extensions/Eclipse/GhidraDev/.

That combination is the actual differentiator. A disassembler that only shows you bytes forces you to do the bookkeeping yourself. Ghidra's model is that the analysis is a database you can query and mutate programmatically, so a script can walk every function, apply a naming convention, and export the result. The cost of that model is Java: startup, memory and the JDK requirement all follow from it.

Installing Ghidra on Windows, macOS or Linux

The README gives one path for the official prebuilt release, and it is the same on all three platforms. You need a 64-bit JDK 21 installed first. Then download a release file from the Releases page, extract it, and launch.

The README is explicit that the file you want is the multi-platform release asset, named ghidra_<version>_<release>_<date>.zip and found under the Assets drop-down. Downloading either of the files labelled "Source Code" is called out as incorrect for this step. It also warns against extracting on top of an existing installation, which is the usual cause of a half-broken upgrade.

Extract the archive and start the GUI:

bash
./ghidraRun

On Windows the equivalent is ghidraRun.bat. There is a second launcher for the Python route:

bash
./support/pyghidraRun

again with support\pyghidraRun.bat on Windows. A Getting Started document sits at the root of the installation directory and the README points there for troubleshooting.

For a first real use, open the CodeBrowser, import a binary through File, then run the default auto-analysis when prompted. That produces the disassembly listing and, for supported architectures, the decompiler view. From the Script Manager you can run one of the bundled scripts, or create a Visual Studio Code module project from Tools, which the README lists as Create VSCode Module project. Note the constraint attached to that: the README states the Eclipse plugin and the Visual Studio Code integrations only support developing against fully built installations, not a source tree.

Building from source is a different job with different tools

The README separates installing a release from building one, and the toolchains do not match. A release needs JDK 21. A development build needs JDK 25 64-bit, Gradle 9.1.0 or newer (or the bundled wrapper if you have an internet connection), and Python 3.9 through 3.14 with pip. On Linux and macOS you also need GCC or Clang and make; on Windows, Visual Studio 2017 or later with MSVC, the Windows SDK and C++ ATL.

The build sequence the README documents starts by fetching dependencies into the source tree, then producing the distribution:

bash
gradle -I gradle/support/fetchDependencies.gradle
gradle buildGhidra

The README notes that ./gradlew or gradlew.bat may replace gradle when you have not installed Gradle yourself. The output lands in build/dist/. If you intend to work on the tool rather than with it, the README recommends Eclipse and a preparation step:

bash
gradle prepdev eclipse buildNatives

This is the point where most casual users should stop. Building Ghidra is a multi-toolchain exercise, and the README itself points to a Known Issues section in DevGuide.md for build failures, which tells you failures are expected often enough to warrant a section.

Where Ghidra is the wrong tool

The README opens with a security warning: there are known security vulnerabilities within certain versions of Ghidra, and it directs readers to the project's Security Advisories before proceeding. That is not boilerplate. If you are analyzing hostile input, the analysis tool itself is part of your attack surface, and the README's own framing puts the burden on you to check which versions are affected.

There are other boundaries. Installing is manual by design: there is no package manager step in the README, so you manage the JDK, the extraction directory and the upgrades yourself. The README's instruction not to extract over an existing installation means upgrades are a replace-and-relaunch operation rather than an in-place update.

Java is a real constraint on older or memory-limited machines, and the JDK version is not negotiable: JDK 21 for releases, JDK 25 for source builds. If your environment is pinned to a different JDK, you either install a second one or you do not run Ghidra. And if your goal is a quick look at a small script rather than a compiled binary, the whole framework is the wrong instrument.

Ghidra against IDA Pro: the difference is the licence and the scripting model

The obvious comparison, and the one people search for, is IDA Pro. The structural difference is licensing and distribution. Ghidra is Apache-2.0 and its source is public, so you can read the analysis code, patch it, and ship an extension without negotiating anything. IDA Pro is a commercial product with paid tiers, which buys commercial support and a long-established plugin ecosystem that many published workflows assume.

That difference propagates into how you work. With Ghidra, the extension path is Java or Python scripts plus the GhidraDev plugin for Eclipse, and the README notes that Visual Studio Code can be used to edit scripts from the Script Manager. With a commercial tool, integration typically means buying into the vendor's plugin API and support contract. Neither is strictly better; they fail in different directions. Ghidra's model means the fix for a missing feature is often a script you write, and the fix for a bug is a patch you carry. A commercial licence means the fix is someone else's job, on someone else's schedule.

For teams, the README's stated design goal of scaling and teaming is the part worth weighing. If several analysts need to share analysis state, an open, scriptable platform is easier to build that on than a per-seat commercial install.

Maintenance, upgrades and the licence position

The repository is not archived, and the last push was on 2026-08-18, the same date as the 12.1.3 build. The two preceding releases, 12.1.2 and 12.1, are dated 2026-06-05 and 2026-05-13. That cadence tells you releases arrive often enough that pinning a version and forgetting it is a choice, not a default, and the security warning in the README makes the choice consequential.

Ghidra is Apache-2.0. The repository carries a LICENSE file, a NOTICE file, and a GPL/ directory alongside a licenses/ directory, which is a sign that bundled third-party components come with their own terms. Apache-2.0 on the project as a whole does not automatically relicense everything shipped inside a release archive. If you redistribute a Ghidra build or bundle it into a product, reading the NOTICE and the licenses/ contents is the minimum step, and that is a factual observation rather than legal advice.

Upgrade cost is mostly your own process. Because the README warns against extracting over an existing installation, plan for a parallel directory and a switch rather than an in-place update, and re-check the security advisories for whichever version you land on.

Editorial conclusion

Adopt Ghidra if you need a scriptable, extensible analysis platform that runs on Windows, macOS and Linux without a licence fee, and if you are willing to keep a JDK 21 install alongside it. Do not adopt it if you expect a package manager to place it on your PATH, or if you need a vendor to answer a support ticket. Before committing, verify which JDK your machine already has, read the security advisories the README points to, and confirm whether you need the interactive GUI or the headless path, because those two lead to different setup work.

Frequently asked questions

What is Ghidra used for?

It is a software reverse engineering framework for analyzing compiled code: disassembly, assembly, decompilation, graphing and scripting. The README says the NSA built it to solve scaling and teaming problems on complex reverse engineering efforts, and has applied it to analyzing malicious code and finding potential vulnerabilities.

Is Ghidra as good as IDA Pro?

The two differ most in licensing and extension model rather than in a single quality score. Ghidra is Apache-2.0 with public source and Java or Python scripting, while IDA Pro is a commercial product, so the trade-off is between self-supported extensibility and paid vendor support.

Why did Ghidra get released?

The README states it was built in support of NSA's Cybersecurity mission, to solve scaling and teaming problems on complex SRE efforts and to provide a customizable, extensible research platform. It was published as open source under Apache-2.0.

Where can I get Ghidra?

From the Releases page linked in the README, as the multi-platform asset named ghidra_<version>_<release>_<date>.zip. The README warns that downloading either file labelled "Source Code" is not correct for installing a prebuilt release.

How to install Ghidra?

Install a 64-bit JDK 21, download the multi-platform release ZIP, extract it (not on top of an existing installation), then launch ./ghidraRun, or ghidraRun.bat on Windows. A Getting Started document at the root of the installation directory covers troubleshooting.

How to use Ghidra to decompile?

Open the binary in the CodeBrowser and run the default auto-analysis when prompted, which produces the disassembly listing and the decompiler view for supported architectures. Ghidra supports a wide variety of processor instruction sets, so decompiler output depends on the architecture of the binary you import.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/nationalsecurityagency-ghidra.svg)](https://hysenlabs.com/projects/nationalsecurityagency-ghidra)
Community notes

Community notes