Skip to content

GhidraDec 1.0: Ghidra 12.1 and IDA 9.3 Modernization

Latest

Choose a tag to compare

@GregoryMorse GregoryMorse released this 03 Jul 16:01

GhidraDec 1.0 is the first major release since the old 0.4 baseline. The project has been substantially modernized around current Ghidra and IDA releases, with a new CMake build, packaged release artifacts, broader SDK compatibility, and a much more robust Ghidra decompiler bridge.

Highlights

  • Updated the primary target to Ghidra 12.1.x and IDA SDK 9.3.
  • Added manifest-driven build support for IDA SDKs from 6.8 through 9.3, plus a moving latest target for the public Hex-Rays SDK branch.
  • Added CI/release packaging for IDA 9.3 by default.
  • Added local release-backfill tooling so older IDA SDK builds can be generated from licensed local SDK archives and attached permanently to this GitHub Release.
  • Reworked dependency handling so Ghidra decompiler sources, RetDec, and jsoncpp are fetched/extracted into build-local dependency trees.
  • Updated RetDec to v5.0 and jsoncpp to v1.9.8.
  • Added project logo/icon assets and an IDA plugin icon.

Decompiler Improvements

  • Updated the Ghidra decompiler bridge for the current 12.1 protocol.
  • Added handling for newer packed decompiler query elements and additional protocol commands.
  • Improved mapped-symbol lookup so IDA names are preserved instead of falling back to synthetic func_0x... names.
  • Improved parameter-identification handling and IDA database update behavior.
  • Improved import handling so decompile-all runs survive imports gracefully.
  • Improved switch/control-flow handling for newer Ghidra output.
  • Expanded processor/language coverage across x86, ARM, AArch64, MIPS, PowerPC, RISC-V, Java, and Dalvik where IDA and Ghidra support overlap.

UI And Configuration

  • Separated user-facing messages from verbose trace diagnostics.
  • Enabled IDB backup by default for normal builds before decompilation.
  • Reworked configuration into focused display and decompiler behavior panels.
  • Exposed more Ghidra decompiler options, including jump-table limits, max instructions, alias blocking, datatype splitting, namespace display, brace formatting, NaN handling, and prototype evaluation defaults.
  • Improved viewer coloring, navigation, symbol interaction, output prologue generation, and graph/non-graph navigation.
  • Fixed several GUI crashes around decompiled-output navigation and main-thread callback failures.

Build, Packaging, And Testing

  • Replaced legacy root-folder build output with CMake-first builds under build/matrix/ida-<version>.
  • Added Linux and macOS compile/package support.
  • Added package targets that produce versioned plugin ZIPs for release upload.
  • Added unattended IDA regression tooling for selective decompilation, decompile-all, per-function decompile-all, saved database reuse, and dangerous-failure detection.
  • Added public corpus tooling around angr/binaries for broad architecture coverage.

Known Limitations

  • Public GitHub-hosted CI is compile/package-only because IDA execution requires a licensed local or self-hosted installation.
  • IDA-backed regression automation is currently Windows-first.
  • A few public corpus entries remain quality-investigation targets rather than release blockers, notably MIPS switch-heavy jump-table recovery and tiny RISC-V relocatable branch/jump cases.
  • The structured C graph view remains experimental.