PAGES
← all tools
◆ Reverse Engineering

gef

2026.01 open-source

GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging capabilities for exploit devs & reverse engineers on Linux

Summary

gef is an open-source GDB plugin, free to use, that adds exploit development and reverse-engineering commands on top of standard GDB for x86/64, ARMARMA family of RISC processor architectures designed by Arm Holdings and licensed to chip makers worldwide; tools target it to run natively on mobile, embedded, and increasingly server and desktop hardware., MIPSMIPSA RISC processor architecture originally developed at Stanford and commercialized by MIPS Technologies, widely used in embedded and network devices; cyber tools target it to analyze or exploit routers, cameras, and similar hardware., PowerPC and SPARC. It runs as a single Python script loaded into GDB from the command line, installed with one shell command and no dependencies, so you debug the same way you always have but with richer context, heap inspection, and memory-map filtering on top. It targets exploit developers and reverse-engineers, though the README notes application developers benefit too, since it strips away a lot of GDB's usual friction. It doesn't name a direct competitor, but it sits in the category of GDB enhancement layers alongside similar Python-based GDB frontends. First committed in 2015, it has drawn 156 contributors and 39 commits in the past year, with its most recent release about 200 days ago.

GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging capabilities for exploit devs & reverse engineers on Linux

How gef helps

What is actually happening on the heap at the moment this program crashed?

walks the allocator's chunks in a single pass, including the top chunk, and flags corruption so you can see the state of memory without hand-computing chunk headers

Which memory regions actually matter in this process's address space?

lists the process's mapped regions and lets you narrow the view to specific types like heap or stack, cutting a long memory map down to what's relevant

What are the arguments and context around the instruction I'm stopped at?

reconstructs register, stack and disassembly context automatically on each stop, scanning nearby instructions to guess arguments without you re-typing standard GDB commands

Can I keep working the same way when the target is on another machine?

attaches to a remote gdbserver process by address and PID and gives the same enhanced context locally as it would for a local binary

Will this rely on tooling beyond what's already on my system?

runs as a single Python script loaded straight into GDB, with no additional dependencies to install or version against

Does this still work on the architecture my target binary was built for?

works across x86/64, ARM, MIPS, PowerPC and SPARC through an architecture abstraction layer, so the same commands apply regardless of the binary's architecture

all 9 features, with the evidence for each →

Languages

Not documented

Features

9 capabilities · 2 backed by code, an API document or a real run

Built from gef's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What gef offers you

  • Command-line interface3
  • Plugin system2
  • Extension marketplace1
  • Plugin API support1
  • Python scripting support1
  • Scripting API1
  • Scripting language support1
All capabilities 9 capabilities
CLI output and debug controls verified Allows users to write output to a file and enable verbose debug output from the command line. 22 releases · 14 other sources · first seen Oct 2018

Also counts toward: Command-line interface

release 22 total

  • Limits the number of instructions scanned when guessing arguments in the context command, improving performance on large code blocks. 2026.01 · Feb 2026 · source · release history
  • Adds a path argument to GotCommand's build_line to support extended GOT inspection in gef-extras. 2026.01 · Feb 2026 · source · release history
  • Adds a simplified clear_screen command for clearing the GDB display. 2025.01 · Jan 2025 · source · release history
  • New stepover command provides a dedicated stepping mechanism distinct from nexti/next 2024.06 · Jun 2024 · source · release history
  • The on_changed setting hook enables actions when GEF configuration values change 2024.06 · Jun 2024 · source · release history
  • Adds C++ symbol support in the xinfo command 2024.01 · Jan 2024 · source · release history

command line

example 12 total

  • Inspect all heap chunks including the top chunk in a single pass — useful when hunting for corruption at the top of the heap. heap chunks -a 2026.01 · Feb 2026 · source
  • Filter vmmap output to only show specific region types (e.g. heap and stack) using multiple filter flags in a single session. gef➤ vmmap --heap --stack 2025.01 · Jan 2025 · source
  • Write a plugin that accesses the window layout state via the new API. layout = gef.get_layout_mapping() # Use layout to determine screen regions 2024.06 · Jun 2024 · source
  • Inspect or modify the architecture state directly using the new subcommand. arch show 2024.06 · Jun 2024 · source
  • Configure GEF to execute a command whenever a setting changes value at runtime. set on_changed "log 'Config changed'" 2024.06 · Jun 2024 · source
  • Skip forward by N instructions without stopping, useful for bypassing checks. skipi <N> 2023.08 · Aug 2023 · source
Internal API and extensibility shipped Provides a Python-based internal API for plugins and commands to access memory, session state, architecture, UI, and remote connection states. 6 releases · first seen Jan 2022

Also counts toward: Plugin API support, Plugin system, Python scripting support, Scripting API, Scripting language support

release

  • A layout mapping API is exposed for use by external plugins 2024.06 · Jun 2024 · source · release history
  • arch command is introduced to manage the internal gef.arch object 2024.06 · Jun 2024 · source · release history
  • Runtime info is now available in gef.session, including .pagesize, .canary, .constants, .pid, .qemu_mode, and .remote 2022.06 · Jun 2022 · source · release history
  • Remote support has been entirely rewritten and is now fully exposed via the gef.remote namespace (including Qemu support) 2022.06 · Jun 2022 · source · release history
  • Exposes a new internal API accessible via the gef Python namespace, including gef.arch, gef.session, gef.memory, and gef.ui modules 2022.01 · Jan 2022 · source · release history
  • Adds support for pluggable architectures via the @register_architecture decorator on the Architecture base class 2022.01 · Jan 2022 · source · release history
Architecture-specific exploitation aids shipped Provides architecture-specific commands and data structures, such as PIE base address access or Glibc Tcache bin details, to assist in exploiting specific binary formats. 4 releases · 1 other source · first seen Oct 2018

release

  • pattern command default period changed from previous value to 4, potentially altering output format. 2021.07 · Jul 2021 · source · release history
  • Updates the pattern command default period to 4 for pwntools compatibility. 2021.07 · Jul 2021 · source · release history
  • pcustom: now supports recursive structure 2020.06 · Jun 2020 · source · release history
  • Glibc Tcache bins support 2018.10 · Oct 2018 · source · release history

example

  • Access PIE base address via the new convenience variable. print $_pie 2018.10 · Oct 2018 · source
GitHub release publishing verified Creates a new tag and publishes a release on GitHub for a specified repository using a provided token and version number. 4 other sources · first seen Oct 2021

command line

  • --token — Specify the Github token to use (requires `repo` scope) 2021.10 · Oct 2021 · command-line history
  • --repository — Specify the repository (default: '%(default)s') 2021.10 · Oct 2021 · command-line history
  • --push-release — Create the new tag and publish the release on Github 2021.10 · Oct 2021 · command-line history
  • --version — Specify the version number (default: '%(default)s') 2021.10 · Oct 2021 · command-line history
Memory map filtering shipped Allows filtering the displayed memory map by specific region types or using multiple flags. 3 releases · first seen Apr 2018

Also counts toward: Command-line interface

release

  • Adds support for multiple filter flags in the vmmap command, enabling finer-grained memory map filtering. 2025.01 · Jan 2025 · source · release history
  • Adds memory map provider capability 2024.01 · Jan 2024 · source · release history
  • theme command allows more customizable display themes 2018.04 · Apr 2018 · source · release history
Multi-architecture support shipped Supports debugging and analyzing binaries for diverse processor architectures beyond the primary supported ones. 2 releases · 1 other source · first seen Oct 2018

Also counts toward: Command-line interface

release

  • Adds alias add, alias remove, and alias list subcommands to manage command aliases. 2021.07 · Jul 2021 · source · release history
  • Support for RISC-V architecture 2018.10 · Oct 2018 · source · release history

example

  • Manage CLI aliases for quick access to complex gef commands. alias add p pattern x0 alias list alias remove p 2021.07 · Jul 2021 · source
Plugin ecosystem access shipped Provides a dedicated external repository where users can find and contribute third-party extensions, commands, or scripts. 2 releases · 1 other source · first seen Apr 2018

Also counts toward: Extension marketplace, Plugin system

release

  • Rewrite of gef-binja, and is now a plugin available from the Binary Ninja Plugin Store 2020.06 · Jun 2020 · source · release history
  • New dedicated external script repository gef-extras available for contribution 2018.04 · Apr 2018 · source · release history

example

  • Install the new gef-binja plugin from within Binary Ninja. 1. Open Binary Ninja 2. Go to Plugins > Plugin Store 3. Search for 'gef-binja' 4. Click Install 2020.06 · Jun 2020 · source
Remote debugging support shipped Enables connecting to and controlling remote GDB stubs, including QEMU instances. 1 release · first seen Jan 2024

release

  • Adds basic support for the target remote command via gef-remote to connect to a remote GDB stub 2024.01 · Jan 2024 · source · release history
Enhanced context visualization shipped Improves the standard debugging context view by dynamically displaying additional relevant information, such as function call arguments, when breakpoints are hit. 1 release · first seen Apr 2018

release

  • context now displays arguments when hitting function call instructions 2018.04 · Apr 2018 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for gef, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail gef puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

13 entries

  1. August 20261
  2. February 20261
  3. January 20251
  4. June 20241
  5. January 20241
  6. August 20231
  7. June 20221
  8. January 20221
  9. October 20211
  10. July 20211
  11. June 20201
  12. October 20181
  13. April 20181
    Show

    13 entries

    Project health

    Issue, contributor and maintainer activity in hugsy/gef, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 11 −1 vs prior 12 months
    2. Maintainers 1 +0 joined · −0 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 100% of issues opened, last 12 months
    5. Median time to close 101 days first maintainer reply 63 days
    6. Open backlog 10 of 547 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 10
    3. Contributors / month 0
    4. Commits / month 0
    5. Stars 8,361
    Issue themes, last 12 months
    • bugs 75%
    • docs 8%
    • other 17%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →