Skip to main content
Glama

EDB Debugger MCP

CI PyPI Python License: MIT GDB MCP Docker Changelog

About

EDB (Evan's Debugger) is a feature-rich, open-source GUI debugger for Linux (x86/x86-64), known for its intuitive interface, powerful plugin system (22 plugins), and extensive debugging capabilities — breakpoints, memory analysis, ROP tool, heap analyzer, and more. However, EDB has always been limited to manual GUI interaction — until now.

EDB Debugger MCP bridges EDB's debugging engine with modern AI via the Model Context Protocol (MCP). Every EDB feature is exposed as a tool callable by an AI assistant — Claude Desktop, Cursor, or any MCP host — effectively giving AI a debugger's intuition. The server exposes 26 composite debugging tools (19 edb_ + 7 pwntools_) that replace 157 flat primitives using parameter-driven dispatch for minimal context overhead (~4× token savings vs flat tool catalogs).

Behind the scenes, it translates AI requests into GDB MI commands via a high-performance async backend, then formats results back as structured data. Combined with pwntools integration (7 composite tools covering ELF analysis, ROP, shellcode, assembly, packing, tubes, and utilities), it becomes a complete AI-powered reverse engineering workstation.

Stat

Value

Total tools

26 (19 edb_ composite + 7 pwntools_ composite) — replaces 207 flat tools

Test count

452 (pytest, 4 Python versions)

EDB feature coverage

22/22 plugins · 29/29 actions · 13/13 dialogs · 6/6 views

Code size

~9000 LOC · 100 Pydantic models · 182 backend methods

EDB · GDB · MCP · FastMCP · pwntools · Binary Ninja

Related MCP server: pwndbg-lldb-mcp

Table of Contents

Quick Start

pip install edb-debugger-mcp
edb-debugger-mcp &

Then add to Claude Desktop config and ask: "Load /bin/ls, find ROP gadgets with pop eax, and generate execve shellcode" — the AI handles the rest.

Features

  • Program Control — Load, run, pause, continue, restart, attach/detach, kill

  • Breakpoints — Software/hardware breakpoints, watchpoints (read/write/access), conditional, ignore count, commands, catchpoints, export/import

  • Step Operations — Step into/over/out, step instruction, step-over instruction, reverse step/continue

  • Register Management — Read/write all CPU/FPU/SIMD registers, formatted dump, flag analysis, changed registers

  • Memory Operations — Hex dump, write memory/bytes, fill pattern, search, compare regions, set permissions

  • Disassembly — Full/range disassembly, current instruction, assembly patching, NOP fill

  • Stack Analysis — Stack dump, push/pop/modify, frame info, backtrace, arguments, locals

  • Symbol Resolution — Symbol lookup, modules, sections, entry point, symbol map, binary info

  • Thread Support — List/switch threads, process info, thread info

  • Expression Evaluation — C expression, variable get/set, string reading, type info (ptype/whatis)

  • Code Analysis — Source listing, function info/bounds, references, ROP gadgets, basic blocks, CFG

  • Code Patching — Assemble instruction, NOP range, fill zero, label address, comments/annotations

  • Session Management — Save/load sessions, bookmark addresses, export/import breakpoints

  • Remote Debugging — Connect to remote GDB server, generate core dumps

  • Environment — Get/set/unset env vars, set working directory, TTY, signal handling

  • Configuration — ASLR toggle, lazy binding toggle, debug output, session logging, signal ignore list

  • Utility — Binary string convert (hex↔ascii↔utf-16), file↔VA offset convert, font config

  • Pwntools Integration — Assembly/disassembly (Keystone/Capstone), ELF analysis, ROP gadget search, shellcode generation, cyclic pattern, format string payloads, pack/unpack

Use Cases

  • CTF Exploit Development — cyclic pattern → offset discovery → ROP gadgets → shellcode → assemble

  • Malware Analysis — attach → breakpoint → memory dump → core dump

  • Bug Hunting — ASLR disable → run → memory search → heap analysis

  • Vulnerability Research — expression eval → stack inspection → instruction analysis → function call

  • Reverse Engineering — disassemble → CFG → string search → symbol lookup

Requirements

  • Python >= 3.10

  • GDB (GNU Debugger) installed on the system

  • Linux (x86-64 recommended)

Installation

# Clone the repository
git clone https://github.com/oakkaya/edb-debugger-mcp.git
cd edb-debugger-mcp

# Install dependencies
pip install -r requirements.txt

# (Optional) Install with pip
pip install -e .

Usage

Standalone

python edb_debugger_mcp.py

This starts the MCP server on stdio, ready to accept MCP protocol messages.

Testing

# Compile a test binary
gcc -g -o /tmp/test_bin /path/to/test.c

# Then run the server manually or use an MCP client

Claude Desktop Integration

If installed via pip:

{
  "mcpServers": {
    "edb-debugger-mcp": {
      "command": "edb-debugger-mcp"
    }
  }
}

If installed from source:

{
  "mcpServers": {
    "edb-debugger-mcp": {
      "command": "python",
      "args": ["/path/to/edb_debugger_mcp/edb_debugger_mcp.py"]
    }
  }
}

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Other MCP Hosts

The same server works with any MCP-compatible host. Example configurations:

opencode (~/.config/opencode/config.json):

{
  "mcpServers": {
    "edb-debugger-mcp": {
      "command": "edb-debugger-mcp"
    }
  }
}

Cursor (Project Settings → MCP Servers):

{
  "mcpServers": {
    "edb-debugger-mcp": {
      "command": "edb-debugger-mcp"
    }
  }
}

Continue.dev (~/.continue/config.json):

{
  "experimental": {
    "mcpServers": {
      "edb-debugger-mcp": {
        "command": "edb-debugger-mcp"
      }
    }
  }
}

Docker Usage

A pre-built Docker image is available on GitHub Container Registry.

# Pull the latest image
docker pull ghcr.io/oakkaya/edb-debugger-mcp:latest

# Run the MCP server (stdio mode, for MCP hosts)
docker run -i ghcr.io/oakkaya/edb-debugger-mcp

# Run with a specific version tag
docker run -i ghcr.io/oakkaya/edb-debugger-mcp:latest

# Run interactively with a shell for debugging
docker run --rm -it \
  --security-opt seccomp=unconfined \
  --cap-add=SYS_PTRACE \
  ghcr.io/oakkaya/edb-debugger-mcp /bin/bash

The image is built from python:3.13-slim with GDB pre-installed. It is automatically rebuilt and published on every GitHub release (v* tag).

Architecture

┌─────────────────────┐     MCP Protocol      ┌──────────────────────┐
│   MCP Client        │ ◄──────────────────►  │   FastMCP Server     │
│ (Claude, Cursor)    │     stdio JSON-RPC    │   edb_debugger_mcp.py│
└─────────────────────┘                       └──────────┬───────────┘
                                                          │
                                                      GDB MI
                                                   (--interpreter=mi2)
                                                          │
                                                 ┌────────┴───────────┐
                                                 │   GDB Backend      │
                                                 │   gdb_backend.py   │
                                                 │  (async subprocess)│
                                                 │  MI parser + 123   │
                                                 │  public methods    │
                                                 └────────────────────┘

The server uses GDB's MI (Machine Interface) protocol (--interpreter=mi2) to communicate with GDB as a subprocess. The backend:

  • Sends MI/CLI commands via stdin, parses structured MI responses

  • Handles *stopped async events for breakpoint hits

  • Manages process lifecycle (start, kill, detach)

  • Provides readelf-based file offset ↔ VA conversion

Note: The EDB action/dialog/view counts listed in this README cover all of EDB's UI elements. Since this project is an MCP server, UI-only features (About dialog, font selector, Reset UI, window layout) cannot be mapped. All functional debugging capabilities (breakpoint, register, memory, stack, thread, expression, patching, analysis, ROP, session) are 100% covered.

pwntools Tools

The server integrates pwntools — the CTF/exploit development framework — as 50 MCP tools callable alongside the EDB debugger tools.

Tool

Description

pwntools_analyze_elf

Full ELF binary analysis (headers, sections, symbols, security, strings)

pwntools_asm

Assemble assembly instructions to bytes (Keystone)

pwntools_build_rop_chain

Build a ROP chain with ordered gadgets

pwntools_checksec

Check ELF binary security properties (RELRO, Canary, NX, PIE)

pwntools_constgrep

Search pwntools/ELF constants by name or value

pwntools_cyclic

Generate De Bruijn cyclic pattern for offset discovery

pwntools_cyclic_find

Find offset of a value in cyclic pattern

pwntools_disasm

Disassemble raw bytes with pwntools (architecture-aware)

pwntools_elf_deps

Show shared library dependencies and interpreter

pwntools_elf_patch

Patch bytes in ELF binary at file offset (creates .bak)

pwntools_elf_read

Read bytes from ELF binary at section or address

pwntools_elf_sections

List all sections with type, flags, address, size

pwntools_elf_search

Search ELF binary for byte pattern grouped by section

pwntools_elf_strings

Extract printable strings from ELF (by section or all)

pwntools_elf_symbols

Search symbols by regex with address table

pwntools_enc

Encode shellcode (alphanumeric, null_free, xor)

pwntools_entropy

Shannon entropy analysis of file or region

pwntools_erope

Search ROP gadgets grouped by type (syscall, stack_pivot, call, jump)

pwntools_find_rop

Search for ROP gadgets by regex

pwntools_flat

Pack values/addresses into flat payload bytes

pwntools_fmtstr_payload

Generate format string write payload

pwntools_hexdump

Hex dump with ASCII side (colored, offset-labeled)

pwntools_make_elf

Compile assembly code into ELF binary

pwntools_pack

Pack integer to bytes (little/big endian, 8/16/32/64-bit)

pwntools_shellcraft

Generate shellcode for a given arch/OS (execve, bind/rev shell, etc.)

pwntools_sigreturn

Generate SROP (Sigreturn-Oriented Programming) frame

pwntools_unpack

Unpack bytes to integer

Usage: ask the AI "Find ROP gadgets with pop rdi" or "Generate x64 execve shellcode" — no separate setup needed.

EDB Plugin Mapping

Plugin

MCP Coverage

DebuggerCore

Execution, stepping, breakpoints, registers, memory, state

BreakpointManager

edb_set_breakpoint, edb_list_breakpoints, edb_export/import

HardwareBreakpoints

edb_set_hardware_breakpoint, edb_set_watchpoint

InstructionInspector

edb_instruction_detail

Assembler

edb_assemble (Keystone optional)

BinaryInfo

edb_get_binary_info

BinarySearcher

edb_search_memory

Backtrace

edb_get_backtrace

FasLoader

edb_load_symbol_file

DumpState

edb_dump_state

FunctionFinder

edb_list_functions

OpcodeSearcher

edb_search_instructions

References

edb_find_references, edb_string_references

ROPTool

edb_find_rop_gadgets

HeapAnalyzer

edb_analyze_heap

Analyzer

edb_analyze_region, edb_analyze_basic_blocks

SymbolViewer

edb_lookup_symbol

ProcessProperties

edb_get_process_properties

ODbgRegisterView

edb_get_registers, edb_get_fpu_state, edb_get_simd_state

Bookmarks

edb_add_bookmark, edb_list_bookmarks, edb_remove_bookmark

CheckVersion

Automatically handled

DebuggerErrorConsole

edb_set_debug_output

Binary Ninja Integration

⚠ Experimental / untested — Binary Ninja is a commercial product (not available in this environment). The plugin code is structurally complete and follows the BN plugin API, but has not been verified at runtime. PRs welcome.

The binaryninja_mcp/ directory contains a full Binary Ninja plugin that bridges the decompiler with the live debugger. Features:

  • Register overlay — HLIL comments with live register values

  • Single-click breakpoints — Right-click to toggle software/hardware breakpoints

  • In-place patching — NOP, assemble, range-NOP from the disassembly context menu

  • Step control — Step into/over/out, run, pause via Plugins menu

  • Sidebar widget — Live register summary in the "EDB Debugger" tab

Install: ln -s $(pwd)/binaryninja_mcp ~/.binaryninja/plugins/edb-debugger-bridge

Ghidra Integration

⚠ Experimental / untested — Requires pyhidra. Plugin is structurally complete but not verified at runtime. PRs welcome.

The ghidra_mcp/ directory contains a Ghidra Python bridge that follows the same pattern as BN. Features:

  • Start/Stop Bridge — Connect/disconnect from the MCP server

  • Toggle Breakpoint — Set/clear breakpoints at the cursor address

  • In-place patching — NOP, assemble instructions

  • Step/run control — Step into/over, run, pause

  • Register & memory inspection — Live register values, memory hex dump

Install: in Ghidra with pyhidra, run ghidra_mcp/ghidra_bridge.py via the Python interpreter, then use the newly registered actions from the right-click menu.

Web UI

⚠ Experimental

The web_ui/ directory provides a browser-based debugger frontend (FastAPI + vanilla JS). No JS framework required.

cd web_ui
pip install -r requirements.txt
python server.py
# → http://localhost:8000

Features:

  • Categorized tool sidebar — Program, Breakpoints, Run/Step, Registers/Memory, Analysis, Pwntools

  • Dynamic parameter forms — Tools with arguments show input fields auto-generated from the tool schema

  • Dark theme — Clean, readable interface

  • Live results — Output streams into the result panel with auto-scroll

REST API

The Web UI exposes a REST API used by the frontend. All endpoints return JSON unless noted.

Endpoint

Method

Description

/

GET

Serve the main HTML page (static)

/api/quick

GET

Quick action buttons metadata (name, tool, icon)

/api/tools

GET

All tools with category and input fields

/api/tools/{name}

GET

Single tool definition by name

/api/call/{name}

POST

Execute a tool with JSON {"args": {...}}

/api/state

GET

Debugger state snapshot (registers, stack, disasm, backtrace, status)

/api/state/v2

GET

Enhanced state with register diff highlighting

/api/register/set

POST

Set a register value {"name": "eax", "value": "0x..."}

/api/memory/hex

GET

Read memory as parsed hex dump ?address=0x400000&size=256

/api/disasm

GET

Disassemble at address ?address=entry&count=32

/api/disasm/functions

GET

List all functions in the binary

/api/history

GET

Tool call history (in-memory, ordered)

/api/history/clear

POST

Clear tool call history

/api/sessions

GET

List saved debugger sessions

/api/sessions/save

POST

Save session {"name": "..."}

/api/sessions/load/{name}

POST

Load a saved session

/api/sessions/{name}

DELETE

Delete a saved session

/api/tabs/{name}

GET

HTML fragment for a tab (history, sessions, state)

x64dbg Integration

⚠ Experimental / untested — Windows-only. Requires x64dbg with x64dbgpy. No test environment available.

The x64dbg_mcp/ directory contains an x64dbgpy plugin. Features:

  • Start/Stop Bridge — Connect to the MCP server

  • Breakpoint control — Toggle, clear all

  • Patching — NOP, assemble at cursor

  • Step/run — Step into/over, run, pause

  • Inspection — Registers, memory at selection

Install: copy x64dbg_mcp/ to x64dbg's py-plugins/ directory. The "EDB Bridge" submenu appears under Plugins.

Quick Start

# Install
pip install edb-debugger-mcp

# Start the MCP server (standalone)
edb-debugger-mcp

# Or with Web UI
pip install "edb-debugger-mcp[web]"
python3 -m web_ui.server

3-step CTF solve with AI:

User:  Load /challenge/bof and analyze it
AI:    → edb_load_program(path="/challenge/bof")
       → edb_disassemble("main")  → finds gets() call
       → edb_list_functions()     → finds win() at 0x4011b6

User:  Build exploit
AI:    → pwntools_cyclic(200)     → generates pattern
       → pwntools_cyclic_find("0x6161616c") → offset = 136
       → pwntools_flat([0xdeadbeef]*34 + [0x4011b6]) → payload

User:  Test it
AI:    → edb_run(args=$(python3 -c "print('A'*136 + '\xb6\x11\x40')"))
       → edb_set_breakpoint("win")
       → edb_continue() → breaks at win → flag printed!

IDA Pro Integration

✅ Tested with IDA Pro 9.3 — IDAPython imports (ida_pro, idaapi, idc, idautils), all 13 actions register under Edit -> EDB Debugger, MCP subprocess bridge connects with 26 composite tools, step/run/breakpoint/patch actions work, headless mode works with ida -c -A -S<script> under xvfb.

The ida_mcp/ directory contains an IDAPython plugin that connects IDA Pro to the MCP server. Features:

  • Start/Stop Bridge — Launch and terminate the MCP subprocess

  • Toggle Breakpoint (F2) — Set/remove software breakpoint at cursor

  • Clear All Breakpoints — Remove all breakpoints

  • Patching — NOP or assemble instruction at current address

  • Step/run control — Step into (F11), step over (F10), step out (Shift+F11), run (F5), pause

  • Inspection — Show register values, read memory at cursor

Install: copy ida_mcp/ to IDA's plugin directory:

cp -r ida_mcp ~/.idapro/plugins/edb_debugger_bridge

After starting the bridge (Edit -> EDB Debugger -> Start Bridge), all actions are available from the Edit -> EDB Debugger menu.

VS Code Extension

⚠ Experimental

The vscode-edb-mcp/ directory contains a VS Code extension that provides a debugger frontend inside VS Code. Features:

  • Start/Stop Bridge — Spawn and kill the MCP subprocess

  • Debugger Panel — WebView panel for debugging commands

  • Execution control — Run/continue (F5), pause, step into (F11), step over (F10)

  • Breakpoint management — Set/clear breakpoints

  • Register/Memory inspection — View register state and memory

  • Status bar indicator — Shows bridge connection state (connected/disconnected)

Build and install:

cd vscode-edb-mcp
npm install
npm run compile
code --install-extension edb-debugger-mcp-1.0.0.vsix

The extension registers commands under the EDB: prefix and shows a status bar item.

Project Structure

edb-debugger-mcp/
├── edb_debugger_mcp/        # Package: FastMCP server (19 composite edb_ tools)
│   ├── __init__.py           # Entry point + main()
│   ├── _mcp.py               # FastMCP instance + GDB backend init
│   ├── composite_tools.py    # 26 composite tools (19 edb_ + 7 pwntools_)
│   ├── gdb_backend.py        # GDB MI backend (172 public methods, MI parser, session mgmt)
│   └── edb_models.py         # Pydantic models for tool parameters
├── web_ui/                    # Web debugger frontend (FastAPI + htmx, browser-based)
│   ├── server.py              # FastAPI app, tool categories, multi-page routing
│   └── templates/             # Static HTML + JavaScript frontend
├── binaryninja_mcp/           # Binary Ninja plugin (register overlay, right-click BP/patch, step)
├── ghidra_mcp/                # Ghidra bridge (pyhidra-based, same MCP client)
├── ida_mcp/                   # IDA Pro plugin (IDAPython bridge with breakpoint/patch/step)
├── x64dbg_mcp/                # x64dbgpy plugin (Windows debugger bridge)
├── vscode-edb-mcp/            # VS Code extension (debugger panel, commands, status bar)
├── scripts/                   # Utility scripts
│   └── generate_tool_table.py # Auto-generates markdown tool table
├── examples/                  # 10 CTF challenges
│   ├── ret2win/               #   Buffer overflow → call win function
│   ├── format-string/         #   Format string → GOT overwrite
│   ├── crackme/               #   Static password analysis
│   ├── rop-chain/             #   ROP chain ret2libc (NX enabled)
│   ├── shellcode-injection/   #   Shellcode on executable stack
│   ├── off-by-one/            #   Off-by-one overwrites adjacent variable
│   ├── heap-uaf/              #   Use-after-free → function pointer overwrite
│   ├── integer-overflow/      #   Signed check bypass → OOB write
│   ├── nx-bypass/             #   ROP mprotect + shellcode
│   └── canary-leak/           #   Format string leak + BOF with canary
├── tests/                     # 452 tests (pytest + pytest-asyncio)
├── CHANGELOG.md               # Version history
├── requirements.txt           # Python dependencies
├── README.md                  # This file
├── LICENSE                    # MIT License
└── .gitignore                 # Git ignore rules

CTF Examples

The examples/ directory contains 10 CTF-style challenges that showcase different exploitation techniques and the corresponding EDB MCP tools used to solve them.

Challenge

Technique

Tools Demonstrated

ret2win

Buffer overflow overwrites return address to call a hidden win function

edb_exec, edb_breakpoint, edb_stack, edb_expression

format-string

Format string vulnerability used to overwrite GOT entries

edb_expression, edb_memory

crackme

Static password analysis by examining the binary

edb_disassemble, edb_symbol, edb_expression

rop-chain

Return-Oriented Programming chain to bypass NX (ret2libc)

edb_analysis, edb_register, pwntools_rop, edb_memory

shellcode-injection

Shellcode injection and execution on an executable stack

pwntools_shellcode, edb_memory, edb_breakpoint, edb_exec

off-by-one

Single-byte heap overflow corrupts adjacent variable

edb_breakpoint, edb_memory, edb_stack, edb_expression

heap-uaf

Use-after-free corrupts a function pointer to gain control

edb_analysis, edb_breakpoint, edb_memory

integer-overflow

Integer overflow bypasses a bounds check leading to OOB write

edb_expression, edb_breakpoint, edb_memory, edb_register

nx-bypass

ROP chain calls mprotect then executes shellcode

pwntools_rop, edb_analysis, pwntools_shellcode, edb_breakpoint

canary-leak

Format string leaks stack canary, then BOF overwrites return address

edb_stack, edb_expression, edb_breakpoint

Each challenge includes source code, a compiled binary, and a solve script. Run from the challenge directory:

cd examples/ret2win
python solve.py

Tool Reference (26 tools)

Execution & Process (1 tool)

Tool

Description

edb_exec

Load/attach/run/continue/pause/kill/restart — all execution control via action param

Stepping (1 tool)

Tool

Description

edb_step

Step into/over/out, step N instructions, reverse step/continue

Tracing (1 tool)

Tool

Description

edb_trace

Start/stop/show execution trace recording

Breakpoints (1 tool)

Tool

Description

edb_breakpoint

Set/remove/enable/disable/list/condition/ignore/export/import — all breakpoint ops

Registers (1 tool)

Tool

Description

edb_register

Get/set/dump all registers, FPU state, SIMD state, EFLAGS

Memory (1 tool)

Tool

Description

edb_memory

Read/write/search/fill/compare/map/dump — all memory operations

Disassembly (1 tool)

Tool

Description

edb_disassemble

Disassemble at address/range, current instruction, assemble, analyze calls

Stack (1 tool)

Tool

Description

edb_stack

Dump/backtrace/push/pop/modify/scan for return addresses

Symbols (1 tool)

Tool

Description

edb_symbol

Lookup, function info, xrefs, strings, entry point, symbol generation

Expressions (1 tool)

Tool

Description

edb_expression

Evaluate C expression, get/set variables, arguments, locals, watch

Debug Info (1 tool)

Tool

Description

edb_debug_info

Source listing, ptype, whatis, frame info

Threads (1 tool)

Tool

Description

edb_thread

List/switch threads, inferior info

Modules & Plugins (1 tool)

Tool

Description

edb_module

List modules, arch info, plugins, features

Analysis (1 tool)

Tool

Description

edb_analysis

Analyze region/heap, ROP gadgets, basic blocks, CFG, exploit generation

Annotations (1 tool)

Tool

Description

edb_annotation

Comments, bookmarks, labels

Session (1 tool)

Tool

Description

edb_session

Status/dump/export, save/load, remote connect, signals, core dump

Patching (1 tool)

Tool

Description

edb_patch

NOP range, jump to address, file↔VA offset, binary diff, snapshot

Configuration (1 tool)

Tool

Description

edb_config

ASLR, lazy binding, signal handling, catchpoints, TTY, debug output

Environment (1 tool)

Tool

Description

edb_environment

Environment variables, session logging, raw GDB commands


pwntools Tools (7 composite)

Tool

Description

pwntools_elf

ELF analysis: sections, symbols, strings, deps, GOT, PLT, segments, notes, diff, patch, search, make-elf, entropy

pwntools_rop

ROP gadgets: search, extended search, chain builder, sigreturn frame, fmtstr payload

pwntools_shellcode

Shellcode generation and encoding (alphanumeric/null-free/xor)

pwntools_asm

Assembly ↔ hex: disassemble and assemble instructions

pwntools_pack

Pack/unpack, enhex/unhex, flat, hexdump — all data encoding operations

pwntools_util

Utilities: cyclic, cyclic_find, rol, ror, bits, align, constgrep, context, log_level

pwntools_tube

Process/remote I/O: send, sendline, recv, recvline, recvuntil, close, list

License

MIT License — see LICENSE for details.

Available Tools

207 tools
edb_add_bookmarkA
Idempotent

Save a named bookmark pointing to an address for quick navigation. Equivalent to EDB's Bookmarks plugin. Useful for marking key locations during reverse engineering.

Args: params (BookmarkInput): Bookmark - name (str): Name (e.g., 'main_loop') - address (str): Address (e.g., '0x400000')

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_add_commentA
Idempotent

Add a text annotation to an address. Comments are stored in-memory and can be listed with edb_list_comments. Useful for documenting analysis findings during a reverse engineering session.

Args: params (CommentInput): Comment data - address (str): Address in hex (e.g., '0x400000') - comment (str): Annotation text

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_analyze_basic_blocksA
Read-onlyIdempotent

Analyze a code region and identify basic blocks. Equivalent to EDB's Analyzer plugin basic block detection. Shows each basic block with its instructions, where blocks end at branch/jump/call/ret instructions.

Args: params (AnalyzeBasicBlocksInput): Region - address (str): Start address - size (int): Region size (default: 256)

Returns: str: Basic block listing with instruction count per block

Inputs: params (required). Returns: result

edb_analyze_calls_atA
Read-onlyIdempotent

Disassemble at an address and identify call/jump targets. Shows each instruction and resolves targets for call, jmp, jz, jnz. Essential for control flow analysis and understanding branch targets.

Args: params (AnalyzeCallsInput): Address - address (str): Address to analyze

Returns: str: Instructions with resolved call/jump targets

Inputs: params (required). Returns: result

edb_analyze_heapA
Read-onlyIdempotent

Analyze the heap memory region of the debugged process. Equivalent to EDB's HeapAnalyzer plugin. Shows heap regions, sizes, permissions, and strings found in heap memory.

Returns: str: Heap analysis including regions, sizes, and strings

Inputs: no named parameters. Returns: result

edb_analyze_regionA
Read-onlyIdempotent

Analyze a code region for call instructions, branch instructions, and strings. Equivalent to EDB's Analyzer plugin. Shows control flow information for the given address range.

Args: params (AnalyzeRegionInput): Region parameters - address (str): Start address - size (int): Region size in bytes (default: 256)

Returns: str: Analysis with call/branch/instruction counts

Inputs: params (required). Returns: result

edb_apply_patches_to_fileC
Destructive

Write runtime memory modifications back to the binary file on disk.

Inputs: params (required). Returns: result

edb_assembleA
Destructive

Assemble an assembly instruction and write it to memory. Equivalent to EDB's Assembler plugin. Uses keystone engine if available, otherwise falls back to common opcodes (nop, int3, ret).

Args: params (AssembleInput): Assembly parameters - address (str): Target address - instruction (str): Assembly text (e.g., 'nop', 'mov eax, 0', 'jmp rax')

Returns: str: Assembled bytes and confirmation

Inputs: params (required). Returns: result

edb_attach_processA

Attach the debugger to an already-running process by PID. The process is paused on attach.

Args: params (AttachPid): Process ID - pid (int): Process ID to attach to

Returns: str: Status message confirming attachment

Inputs: params (required). Returns: result

edb_binary_diffA
Read-onlyIdempotent

Compare the current loaded binary with its original on disk.

Inputs: no named parameters. Returns: result

edb_binary_string_convertA
Read-onlyIdempotent

Convert between hex, ASCII, and UTF-16 representations. Equivalent to EDB's BinaryString widget (DialogInputBinaryString). Useful for preparing data for memory patches or analyzing strings.

Provide at least one of: hex_str, ascii_str, or utf16_str.

Args: params (BinaryStringConvertInput): Input string - hex_str (str): Hex input (e.g., '48656c6c6f') - ascii_str (str): ASCII input (e.g., 'Hello') - utf16_str (str): UTF-16 hex (e.g., '48006500')

Returns: str: All representations

Inputs: params (required). Returns: result

edb_breakpoint_commandsA

Set commands to execute when a breakpoint is hit. Equivalent to GDB's commands keyword. Can run any GDB command including print, continue, set, etc. Useful for logging data without stopping.

Args: params (BreakpointCommandsInput): Commands - number (int): Breakpoint number - commands (list[str]): Commands (e.g., ['print rax', 'continue'])

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_breakpoint_exportA
Idempotent

Export all breakpoints to a JSON file on disk. Equivalent to EDB's BreakpointManager export feature. Breakpoints can be reloaded later with edb_breakpoint_import.

Args: params (BreakpointFileInput): Output - file_path (str): Full path to JSON file

Returns: str: Export confirmation with count

Inputs: params (required). Returns: result

edb_breakpoint_importA

Import breakpoints from a JSON file previously exported with edb_breakpoint_export. Equivalent to EDB's BreakpointManager import feature.

Args: params (BreakpointFileInput): Input - file_path (str): Full path to JSON file

Returns: str: Import confirmation with count

Inputs: params (required). Returns: result

edb_call_functionA
Destructive

Call a function in the context of the debugged process. Equivalent to GDB's call command. Useful for testing functions with specific arguments or calling library functions.

Args: params (CallFunctionInput): Function call - function_expr (str): Expression (e.g., 'printf("hello")', 'malloc(100)')

Returns: str: Function result (return value in EAX/RAX)

Inputs: params (required). Returns: result

edb_compare_memoryA
Read-onlyIdempotent

Compare two memory regions byte-by-byte and show differences. Useful for detecting self-modifying code, comparing loaded vs original code, or analyzing binary patches.

Args: params (CompareMemoryInput): Comparison parameters - address1 (str): First address (e.g., '0x400000') - address2 (str): Second address (e.g., '0x400100') - count (int): Number of bytes to compare (max: 4096)

Returns: str: Differing regions with hex values

Inputs: params (required). Returns: result

edb_compare_sectionsA
Read-onlyIdempotent

Compare loaded memory sections with the original binary on disk. Detects modifications to code sections (self-modifying code, patches). Equivalent to EDB's memory comparison features.

Returns: str: Section comparison results

Inputs: no named parameters. Returns: result

edb_compare_snapshotC

Save a full debugger snapshot (registers + memory) for later comparison.

Inputs: params (required). Returns: result

edb_configure_debuggerA
DestructiveIdempotent

Configure GDB debugger settings. Equivalent to EDB's Configure Debugger dialog. Controls follow-fork-mode, ASLR, scheduler-locking, backtrace limits, and many other debugger behaviors.

Args: params (DebuggerConfigInput): Setting - setting (str): Setting name (e.g., 'follow-fork-mode', 'disable-randomization', 'scheduler-locking', 'backtrace limit', 'print elements') - value (str): Value to set (empty to query, use 'on'/'off' for booleans)

Returns: str: Configuration result

Inputs: params (required). Returns: result

edb_continueA

Continue execution after a breakpoint or pause. Resumes from the current instruction pointer.

Returns: str: Status with stop reason if another breakpoint is hit

Inputs: no named parameters. Returns: result

edb_continue_toA

Continue execution until a specific address is reached. Sets a temporary breakpoint at the given address and runs.

Args: params (ContinueToAddress): Target - address (str): Address in hex (e.g., '0x4000a0') or function name

Returns: str: Location details when stopped

Inputs: params (required). Returns: result

edb_detach_processA
Idempotent

Detach from the debugged process. The process continues running independently.

Returns: str: Confirmation of detachment

Inputs: no named parameters. Returns: result

edb_disable_aslrA
DestructiveIdempotent

Disable or enable ASLR for debugee. Equivalent to EDB's DialogOptions → Disable ASLR checkbox. Affects future runs of the debugged program.

Args: params (DisableASLRInput): ASLR setting - disable (bool): True = disable ASLR, False = enable

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_disable_breakpointA
Idempotent

Disable a breakpoint without removing it. It can be re-enabled later.

Args: params (BreakpointNumber): Breakpoint number - number (int): Breakpoint ID to disable

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_disable_lazy_bindingA
DestructiveIdempotent

Disable or enable lazy binding for debugee. Equivalent to EDB's DialogOptions → Disable Lazy Binding checkbox. When disabled, all shared library symbols are resolved at startup, making breakpoints on library functions more reliable.

Args: params (DisableLazyBindingInput): Lazy binding setting - disable (bool): True = disable lazy binding, False = enable

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_disassembleA
Read-onlyIdempotent

Disassemble machine code at an address or function. Shows assembly instructions with addresses, offsets, and opcodes.

Args: params (DisassembleInput): Disassembly params - location (str): Address (e.g., '0x400000') or function (e.g., 'main') - count (int): Instructions to show, 1-200 (default: 10)

Returns: str: Formatted disassembly listing

Inputs: params (required). Returns: result

edb_disassemble_rangeA
Read-onlyIdempotent

Disassemble a range of memory from start to end address. Unlike edb_disassemble which uses a count of instructions, this tool disassembles an exact address range. Useful for full function analysis.

Args: params (DisassembleRangeInput): Range - start_address (str): Start address (e.g., '0x400000') - end_address (str): End address (e.g., '0x400100')

Returns: str: Disassembly listing

Inputs: params (required). Returns: result

edb_dump_memory_to_fileA
Idempotent

Dump a memory region to a binary file on disk. Equivalent to EDB's memory dump feature. Useful for extracting code regions, data sections, or heap contents for offline analysis.

Args: params (DumpMemoryToFileInput): Dump parameters - address (str): Start address - size (int): Number of bytes to dump (max: 1MB) - file_path (str): Full output file path

Returns: str: Confirmation with byte count

Inputs: params (required). Returns: result

edb_dump_registersA
Read-onlyIdempotent

Get a human-readable register dump in markdown table format. Shows all general-purpose registers, instruction pointer, flags and their meanings.

Returns: str: Markdown-formatted register table

Inputs: no named parameters. Returns: result

edb_dump_stateA
Read-onlyIdempotent

Dump complete debugger state: all registers, current instruction, stack, backtrace, memory map, and status. Equivalent to EDB's DumpState plugin. One-shot comprehensive process snapshot.

Returns: str: Full process state dump

Inputs: no named parameters. Returns: result

edb_enable_breakpointA
Idempotent

Re-activate a disabled breakpoint.

Args: params (BreakpointNumber): Breakpoint number - number (int): Breakpoint ID to enable

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_enum_registersA
Read-onlyIdempotent

List available CPU registers by category (GPR, SIMD, FPU, flag).

Inputs: no named parameters. Returns: result

edb_evaluate_expressionB
Read-onlyIdempotent

Evaluate a C expression in the debug context. Supports variables, pointer dereferences, casts, arithmetic, and function calls. Examples: 'x + 5', '(int)0x7fff0000', 'argv[0]'

Args: params (EvaluateExpr): Expression - expression (str): C expression to evaluate

Returns: str: Expression result

Inputs: params (required). Returns: result

edb_execute_gdb_commandB
Read-onlyDestructive

Execute any raw GDB command directly. Full access to GDB's CLI. Powerful for advanced debugging.

Inputs: params (required). Returns: result

edb_exploit_generateA
Read-onlyIdempotent

Generate a buffer-overflow exploit payload: offset + ROP chain + shellcode. Supports amd64 (ret2libc ROP), i386 (ret2libc), and aarch64 (shellcode).

Inputs: params (required). Returns: result

edb_export_stateB
Read-onlyIdempotent

Export the complete debugger state as structured JSON.

Inputs: no named parameters. Returns: result

edb_file_offset_to_vaA
Read-onlyIdempotent

Convert a file offset from the binary on disk to the corresponding virtual address in the loaded process. Essential for patching binaries and understanding disk-to-memory mapping.

Args: params (FileOffsetInput): File offset - offset (int): Offset in bytes from start of file

Returns: str: Virtual address in hex

Inputs: params (required). Returns: result

edb_fill_memoryA
Destructive

Fill a memory region with a repeating byte value. Useful for zeroing buffers, filling with NOPs (0x90), or any pattern. Uses edb_write_memory_bytes internally.

Args: params (FillMemoryInput): Fill parameters - address (str): Start address (e.g., '0x400000') - byte_value (str): Byte value (e.g., '0x90' or '90') - count (int): Number of bytes to fill

Returns: str: Confirmation of fill operation

Inputs: params (required). Returns: result

edb_find_referencesB
Read-onlyIdempotent

Find all code references to a given address or symbol. Searches functions and variables referencing the address.

Args: params (FindReferencesInput): Target address - address (str): Address to find references to

Returns: str: Reference locations

Inputs: params (required). Returns: result

edb_find_rop_gadgetsA
Read-onlyIdempotent

Search for ROP gadgets (instructions ending with 'ret') in memory. Equivalent to EDB's ROPTool plugin. Finds usable instruction sequences for ROP chain construction.

Args: params (RopSearchInput): Search parameters - address (str): Start address (default: $pc) - depth (int): Max instructions before ret, 1-10 (default: 2) - count (int): Max results, 1-1000 (default: 100)

Returns: str: ROP gadget addresses and bytes

Inputs: params (required). Returns: result

edb_find_stringsA
Read-onlyIdempotent

Find printable ASCII strings in the current code region. Searches from current PC for printable character sequences.

Returns: str: Found strings with addresses

Inputs: no named parameters. Returns: result

edb_follow_forkA

Set whether the debugger follows the parent or child process after a fork.

Inputs: params (required). Returns: result

edb_generate_cfgA
Read-onlyIdempotent

Generate a Control Flow Graph in Graphviz DOT format. Equivalent to EDB's GraphWidget (which uses Graphviz). The output DOT can be rendered with dot -Tpng -o output.png or viewed in any Graphviz viewer. Shows edges between basic blocks.

Args: params (AnalyzeBasicBlocksInput): Region - address (str): Start address - size (int): Region size (default: 256)

Returns: str: DOT format CFG

Inputs: params (required). Returns: result

edb_generate_core_dumpA
Idempotent

Generate a core dump of the current process for post-mortem analysis. Equivalent to EDB's save state feature. Saves full process memory and register state to a core file.

Args: params (CoreDumpInput): Output - file_path (str): Output file path (default: core)

Returns: str: Core dump confirmation with file size

Inputs: params (required). Returns: result

edb_generate_symbolsA
Read-onlyIdempotent

Generate a symbol map for a binary file using EDB's symbol generator. Equivalent to running edb --symbols <file>. Useful for creating symbol map files for stripped binaries.

Args: params (GenerateSymbolsInput): Input - path (str): Binary file path (default: loaded binary)

Returns: str: Symbol map

Inputs: params (required). Returns: result

edb_get_arch_infoA
Read-onlyIdempotent

Get architecture information about the debugged process and binary. Equivalent to EDB's BinaryInfo plugin. Shows CPU architecture, binary type (PIE/non-PIE), instruction set features, and more.

Returns: str: Architecture details

Inputs: no named parameters. Returns: result

edb_get_argumentsA
Read-onlyIdempotent

Get the arguments passed to the current function. Shows argument names and values.

Returns: str: Function argument names and values

Inputs: no named parameters. Returns: result

edb_get_backtraceA
Read-onlyIdempotent

Get the full call stack backtrace. Frame #0 is the current function. Each frame shows number, address, function name, and source location.

Returns: str: Formatted backtrace

Inputs: no named parameters. Returns: result

edb_get_binary_infoA
Read-onlyIdempotent

Get detailed information about the loaded binary file. Shows ELF header, architecture, entry point, section layout, and more. Equivalent to EDB's BinaryInfo plugin.

Returns: str: Binary file metadata

Inputs: no named parameters. Returns: result

edb_get_changed_registersB
Read-onlyIdempotent

Get all register values (shows current state, EDB-style). Equivalent to EDB's register view with highlighted changed values. Shows all CPU registers with current values.

Returns: str: Register dump

Inputs: no named parameters. Returns: result

edb_get_current_instructionA
Read-onlyIdempotent

Get the instruction at the current program counter (RIP/EIP). Shows what will execute next.

Returns: str: Current instruction text

Inputs: no named parameters. Returns: result

edb_get_current_threadA
Read-onlyIdempotent

Get info about the currently active thread.

Returns: str: Current thread information

Inputs: no named parameters. Returns: result

edb_get_eflagsA
Read-onlyIdempotent

Show the EFLAGS/RFLAGS CPU status register with individual flag states.

Inputs: no named parameters. Returns: result

edb_get_entry_pointA
Read-onlyIdempotent

Get the program entry point address. The entry point is the first code executed when the program starts (typically _start).

Returns: str: Entry point address in hex

Inputs: no named parameters. Returns: result

edb_get_environmentA
Read-onlyIdempotent

Show all environment variables configured for the debugged process. Equivalent to EDB's process properties environment view.

Returns: str: Environment variables

Inputs: no named parameters. Returns: result

edb_get_fpu_stateA
Read-onlyIdempotent

Get the FPU (Floating Point Unit) register state. Equivalent to EDB's RegisterViewModel FPU category. Shows ST0-ST7 stack registers, FPU control word, status word, and tag word.

Returns: str: FPU register values

Inputs: no named parameters. Returns: result

edb_get_frame_infoA
Read-onlyIdempotent

Get detailed information about a stack frame: address, function, arguments, locals, frame type, and more. Equivalent to EDB's call stack panel showing frame details.

Args: params (FrameInfoInput): Frame - frame_level (int): Frame level (0 = innermost, default: 0)

Returns: str: Frame information with args and locals

Inputs: params (required). Returns: result

edb_get_function_boundsA
Read-onlyIdempotent

Get the start address, end address, and size of a function. Useful for understanding function layout and selecting regions for patching.

Args: params (FunctionBoundsInput): Function name - name (str): Function name (e.g., 'main')

Returns: str: Start address, end address, and size

Inputs: params (required). Returns: result

edb_get_function_infoA
Read-onlyIdempotent

Get detailed info about a function: address, prototype, source location.

Args: params (FunctionInfo): Function name - name (str): E.g., 'main', 'malloc'

Returns: str: Function details

Inputs: params (required). Returns: result

edb_get_function_xrefsB
Read-onlyIdempotent

Show cross-references to a given address or function.

Inputs: params (required). Returns: result

edb_get_localsA
Read-onlyIdempotent

Get all local variables in the current function scope. Shows names and values.

Returns: str: Local variable names and values

Inputs: no named parameters. Returns: result

edb_get_memory_mapA
Read-onlyIdempotent

Get the process memory map (like /proc/pid/maps). Shows address ranges, permissions, offset, and paths for all mapped regions.

Returns: str: Memory map listing

Inputs: no named parameters. Returns: result

edb_get_memory_region_infoA
Read-onlyIdempotent

Get information about defined memory regions and their permissions. Equivalent to EDB's DialogMemoryRegions detail view. Shows regions defined with edb_set_memory_permissions and their access attributes.

Returns: str: Memory region permissions

Inputs: no named parameters. Returns: result

edb_get_process_propertiesA
Read-onlyIdempotent

Get comprehensive properties of the debugged process. Equivalent to EDB's ProcessProperties plugin. Shows PID, binary path, arguments, entry point, register state, and more.

Returns: str: Process properties

Inputs: no named parameters. Returns: result

edb_get_registerA
Read-onlyIdempotent

Get the value of a specific CPU register.

Args: params (RegisterName): Register name - name (str): E.g., 'rax', 'rbx', 'rip', 'rsp', 'eflags'

Returns: str: Hex value of the register

Inputs: params (required). Returns: result

edb_get_registersA
Read-onlyIdempotent

Get all CPU register values as JSON. Includes general-purpose registers, instruction pointer, stack pointer, base pointer, flags, and SIMD registers.

Returns: str: JSON object with register names and hex values

Inputs: no named parameters. Returns: result

edb_get_section_infoA
Read-onlyIdempotent

Get detailed section information for loaded modules. Shows section names, addresses, sizes, and file offsets.

Args: params (SectionInfoInput): Module filter - module (Optional[str]): Module name (empty = all)

Returns: str: Section information

Inputs: params (required). Returns: result

edb_get_simd_stateA
Read-onlyIdempotent

Get the SIMD (SSE/AVX) register state. Equivalent to EDB's RegisterViewModel SIMD category. Shows XMM0-15, YMM0-15, ZMM0-31 registers and MXCSR control/status register.

Returns: str: SIMD register values

Inputs: no named parameters. Returns: result

edb_get_stackA
Read-onlyIdempotent

Dump the current stack (stack pointer to higher addresses). Each entry is an 8-byte (64-bit) value.

Returns: str: Stack hex dump

Inputs: no named parameters. Returns: result

edb_get_stack_frameB
Read-onlyIdempotent

Get detailed information about a specific stack frame level. Shows address, function, file, line for the given frame.

Args: params (StackFrameInput): Frame level - frame_level (int): Frame number, 0 = current (default: 0)

Returns: str: JSON frame information

Inputs: params (required). Returns: result

edb_get_statusA
Read-onlyIdempotent

Get the current debugger and process status. Shows whether a process is loaded, running or paused, PID, RIP, current instruction, register count.

Returns: str: JSON status object

Inputs: no named parameters. Returns: result

edb_get_stop_reasonA
Read-onlyIdempotent

Determine why the process stopped (breakpoint, signal, step, etc.). Equivalent to EDB's status bar showing stop reason. Checks GDB's program state and thread status.

Returns: str: Stop reason description

Inputs: no named parameters. Returns: result

edb_get_stringA
Read-onlyIdempotent

Read a null-terminated string from a memory address. Interprets the memory as a C string (null-terminated).

Args: params (ReadStringInput): String parameters - address (str): Address (e.g., '0x400678') - max_length (int): Max string length, 1-4096 (default: 256)

Returns: str: String contents

Inputs: params (required). Returns: result

edb_get_variableA
Read-onlyIdempotent

Read the value of a local or global variable in the current scope.

Args: params (VariableInput): Variable name - name (str): Variable name (e.g., 'i', 'argc', 'buffer')

Returns: str: Variable value

Inputs: params (required). Returns: result

edb_goto_function_startA
Read-onlyIdempotent

Find the function start address containing a given address.

Inputs: params (required). Returns: result

edb_inferior_infoA
Read-onlyIdempotent

Get information about all inferiors (processes) being debugged. Equivalent to GDB's info inferiors command. Shows process list, their PIDs, and the program they're running.

Returns: str: Inferior list with details

Inputs: no named parameters. Returns: result

edb_instruction_detailA
Read-onlyIdempotent

Get detailed information about an instruction at a given address. Equivalent to EDB's InstructionInspector plugin. Shows instruction bytes, assembly, addressing modes, register operands, and more.

Args: params (InstructionDetailInput): Address - address (str): Address to inspect (default: $pc)

Returns: str: Detailed instruction info including bytes, opcode, operands

Inputs: params (required). Returns: result

edb_jump_to_addressA
Destructive

Jump to a specific address, setting the instruction pointer. Equivalent to EDB's jump_to_address (double-click address in BreakpointManager). Use this to skip code or continue from a specific location.

Args: params (JumpAddressInput): Target - address (str): Address to jump to (e.g., '0x400000', 'main+5')

Returns: str: Jump confirmation

Inputs: params (required). Returns: result

edb_kill_processA
Destructive

Kill the debugged process immediately. Equivalent to force-terminating the debuggee.

Returns: str: Confirmation the process was killed

Inputs: no named parameters. Returns: result

edb_label_addressA
Idempotent

Set a label/annotation at an address in the disassembly view. Equivalent to EDB's CPU context menu → Label Address. Labels help identify important locations in the code.

Args: params (LabelAddressInput): Address + label - address (str): Address (e.g., '0x401000') - label (str): Label text (e.g., 'my_func')

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_list_bookmarksA
Read-onlyIdempotent

List all saved bookmarks with names and addresses.

Returns: str: Bookmark listing

Inputs: no named parameters. Returns: result

edb_list_breakpointsA
Read-onlyIdempotent

List all breakpoints, watchpoints, and their status (number, type, enable/disable, address).

Returns: str: Formatted breakpoint table

Inputs: no named parameters. Returns: result

edb_list_breakpoint_typesA
Read-onlyIdempotent

List supported breakpoint types (software, hardware, watchpoint, catchpoint).

Inputs: no named parameters. Returns: result

edb_list_commentsA
Read-onlyIdempotent

List all address annotations added via edb_add_comment. Returns a sorted list of addresses with their associated comments.

Returns: str: Comment listing

Inputs: no named parameters. Returns: result

edb_list_featuresA
Read-onlyIdempotent

List GDB debugger features and capabilities. Shows GDB version, build configuration, and available Python modules.

Returns: str: Feature list

Inputs: no named parameters. Returns: result

edb_list_functionsA
Read-onlyIdempotent

List all functions in the binary, optionally filtered by name. Equivalent to EDB's FunctionFinder plugin. Shows function names, addresses, and prototypes.

Args: params (FunctionFilterInput): Filter - filter_str (str): Optional filter (e.g., 'main', 'printf')

Returns: str: Function listing

Inputs: params (required). Returns: result

edb_list_modulesA
Read-onlyIdempotent

List all shared libraries / modules loaded by the process. Shows base address, text size, and path.

Returns: str: Module listing

Inputs: no named parameters. Returns: result

edb_list_pluginsA
Read-onlyIdempotent

List all available debugger plugins and capabilities. Equivalent to EDB's DialogPlugins. Shows EDB plugins, GDB auto-load scripts, and pretty-printers.

Returns: str: Plugin listing with descriptions

Inputs: no named parameters. Returns: result

edb_list_signalsA
Read-onlyIdempotent

List all signals and how GDB handles them. Equivalent to EDB's signal configuration view. Shows which signals cause stop, print notification, and are passed to the program.

Args: params (ListSignalsInput): Filter - signal (str): Specific signal to query (default: all)

Returns: str: Signal list with handling info

Inputs: params (required). Returns: result

edb_list_sourceA
Read-onlyIdempotent

Display source code with line numbers. Current line is marked with '->'. Reads directly from the source file if available.

Args: params (SourceInput): Source location - file (str): Source file path - line (int): Starting line (default: 1) - count (int): Lines to show, 1-200 (default: 20)

Returns: str: Source code listing

Inputs: params (required). Returns: result

edb_list_source_filesA
Read-onlyIdempotent

List all source files used by the debugged program. Equivalent to GDB's info sources command. Shows compiled source files and their paths.

Returns: str: Source file list

Inputs: no named parameters. Returns: result

edb_list_stack_argumentsB
Read-onlyIdempotent

List arguments for stack frames. Equivalent to EDB's stack frame panel. Shows function arguments for the current frame.

Args: params (FrameRangeInput): Frame range - frame_low (int): Lowest frame (default: 0)

Returns: str: Arguments per frame

Inputs: params (required). Returns: result

edb_list_threadsA
Read-onlyIdempotent

List all threads in the debugged process with IDs, names, and states.

Returns: str: Thread listing

Inputs: no named parameters. Returns: result

edb_load_programA

Load an executable binary for debugging. Resolves symbols and prepares for execution. Optionally pass command-line arguments. This is the mandatory first step for debugging a new binary.

Args: params (BinaryPath): Path and arguments - path (str): Absolute path to the executable - args (Optional[str]): Command-line arguments (default: "")

Returns: str: Status message confirming the binary was loaded

Inputs: params (required). Returns: result

edb_load_symbol_fileA
Destructive

Load a symbol file for the debugged program. Equivalent to EDB's FasLoader plugin and GDB's symbol-file command. Supports ELF debug info files, FAS format, and separated debug symbols.

Args: params (SymbolFileInput): Symbol file - file_path (str): Path to symbol file - address (str): Base address (for add-symbol-file with .o/.so)

Returns: str: Symbol loading result

Inputs: params (required). Returns: result

edb_lookup_symbolA
Read-onlyIdempotent

Look up a symbol's address and type. Supports functions and variables.

Args: params (SymbolLookup): Symbol name - name (str): E.g., 'main', 'printf', 'errno'

Returns: str: Symbol address and type info

Inputs: params (required). Returns: result

edb_nop_rangeA
Destructive

Replace a range of instructions with NOP (0x90) bytes. This is the primary method for patching out conditional jumps or calls. Use edb_get_function_bounds to find the range for a function.

Args: params (NopRangeInput): Range to NOP - start_address (str): Start address (e.g., '0x400000') - end_address (str): End address, exclusive (e.g., '0x400005')

Returns: str: Confirmation of bytes written

Inputs: params (required). Returns: result

edb_patch_historyB
Read-onlyDestructive

Show all memory patches made this session, or clear the history.

Inputs: params (required). Returns: result

edb_pauseA

Pause (interrupt) the running program. Sends a SIGINT to break execution.

Returns: str: Confirmation of interruption

Inputs: no named parameters. Returns: result

edb_pipelineA
Destructive

Load a binary, set breakpoint, run, and dump state in one call.

Inputs: params (required). Returns: result

edb_process_stringsB
Read-onlyIdempotent

Scan process memory for readable ASCII strings.

Inputs: params (required). Returns: result

edb_ptypeA
Read-onlyIdempotent

Print the type of a variable, function, or expression. Equivalent to GDB's ptype command. Shows complete type definition including struct/class members, function signatures, and typedefs.

Args: params (PtypeInput): Expression - expression (str): Expression (e.g., 'main', 'argc', 'struct stat')

Returns: str: Type definition

Inputs: params (required). Returns: result

edb_read_memoryA
Read-onlyIdempotent

Read and display memory contents at an address as a hex dump. Shows hex bytes with ASCII representation.

Args: params (AddressInput): Memory parameters - address (str): Address (e.g., '0x7fff0000' or symbol name) - count (int): Bytes to read, 1-4096 (default: 128)

Returns: str: Formatted hex dump with address, hex bytes, and ASCII

Inputs: params (required). Returns: result

edb_read_memory_asA
Read-onlyIdempotent

Read memory at an address interpreted as a specific data type. Supports integers (8-64 bit signed/unsigned), float, double, pointer, and string. Essential for struct inspection, pointer chasing, and data analysis.

Args: params (ReadMemoryAsInput): Read parameters - address (str): Address or symbol name - data_type (str): Type: int8/16/32/64, uint8/16/32/64, float, double, pointer, string - count (int): Number of elements (default: 1, max: 256)

Returns: str: Value(s) interpreted as the requested type

Inputs: params (required). Returns: result

edb_remote_archA
Read-onlyIdempotent

Detect the architecture of a connected remote GDB target.

Inputs: no named parameters. Returns: result

edb_remote_connectA
Destructive

Connect to a remote gdbserver for remote debugging. Equivalent to starting a new debugging session with remote target. Use extended mode for continuous connection.

Args: params (RemoteConnectInput): Connection - host (str): Remote hostname or IP - port (int): Remote port (1-65535) - extended (bool): Use extended-remote mode

Returns: str: Connection status

Inputs: params (required). Returns: result

edb_remote_infoA
Read-onlyIdempotent

Show detailed information about the remote debugging target.

Inputs: no named parameters. Returns: result

edb_remove_bookmarkA
DestructiveIdempotent

Remove a bookmark by name.

Args: params (BookmarkNameInput): Bookmark name - name (str): Bookmark name to remove

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_remove_breakpointA
DestructiveIdempotent

Permanently remove a breakpoint or watchpoint by number. Use edb_list_breakpoints to find breakpoint numbers.

Args: params (BreakpointNumber): Breakpoint number - number (int): Breakpoint ID to remove

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_remove_commentA
DestructiveIdempotent

Remove an annotation previously added with edb_add_comment.

Args: params (AddressOnlyInput): Address - address (str): Address to remove comment from

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_restartA
Destructive

Kill and restart the debugged program. Reloads the binary, preserves breakpoints.

Returns: str: Status after restart

Inputs: no named parameters. Returns: result

edb_reverse_continueA

Continue execution backward to the previous breakpoint or event. Requires GDB recording to be active (target record-full). Useful for rewinding to find where state changed.

Returns: str: Reverse continue result

Inputs: no named parameters. Returns: result

edb_reverse_stepA

Step backward in the program execution (reverse debugging). Requires GDB recording to be active (target record-full). Steps the program backward one or more instructions.

Args: params (ReverseStepInput): Step count - count (int): Number of reverse steps (default: 1)

Returns: str: Reverse step result

Inputs: params (required). Returns: result

edb_runA

Start execution of the loaded program from the beginning. Stops at the first breakpoint hit.

Returns: str: Status with reason if stopped at breakpoint

Inputs: no named parameters. Returns: result

edb_scan_stack_for_retaddrA
Read-onlyIdempotent

Scan the stack for potential return addresses (values in valid text ranges). Useful for ROP/exploit analysis.

Inputs: params (required). Returns: result

edb_search_instructionsB
Read-onlyIdempotent

Search memory for byte patterns (case-insensitive). Searches memory for the given hex byte pattern within the specified range. Useful for finding instruction opcode patterns in code sections.

Args: params (SearchInstructionsInput): Pattern search - pattern (str): Hex byte pattern (e.g., '0x90 0x90') - range_start (Optional[str]): Start address of search range - range_end (Optional[str]): End address of search range

Returns: str: Addresses where pattern was found

Inputs: params (required). Returns: result

edb_search_memoryA
Read-onlyIdempotent

Search memory for a byte pattern. Finds all occurrences in the specified region.

Args: params (SearchMemoryInput): Search parameters - pattern (str): Hex bytes (e.g., '0x90 0x90') - address (Optional[str]): Start address (default: $pc) - length (Optional[str]): Region size in hex (default: 0x10000)

Returns: str: Addresses where the pattern was found

Inputs: params (required). Returns: result

edb_send_signalB
Destructive

Send a signal to the debugged process. Equivalent to EDB's signal delivery mechanism. Can be used to send SIGINT (2) to interrupt, SIGTERM (15) for graceful shutdown, etc.

Args: params (SignalSendInput): Signal - signum (int): Signal number (1-64), e.g., 2=SIGINT, 9=SIGKILL, 15=SIGTERM

Returns: str: Signal delivery result

Inputs: params (required). Returns: result

edb_session_loadA
Destructive

Load a debugging session from a JSON file. Equivalent to EDB's SessionManager. Restores breakpoints, bookmarks, comments, binary path, and arguments from a saved session.

Args: params (SessionFileInput): Input - file_path (str): Full path to session file

Returns: str: Load confirmation with details

Inputs: params (required). Returns: result

edb_session_saveA
Idempotent

Save the complete debugging session to a JSON file. Equivalent to EDB's SessionManager. Saves breakpoints, bookmarks, comments, binary path, and arguments for later restoration.

Args: params (SessionFileInput): Output - file_path (str): Full path to session file

Returns: str: Save confirmation

Inputs: params (required). Returns: result

edb_set_breakpointB

Set a breakpoint at a function, address, or source location. Supports conditional breakpoints.

Args: params (BreakpointInput): Breakpoint location - location (str): E.g., 'main', '*0x400528', 'foo.c:42' - condition (Optional[str]): E.g., 'x == 5' (default: none)

Returns: str: Breakpoint number and details

Inputs: params (required). Returns: result

edb_set_breakpoint_conditionA
Idempotent

Set or remove a condition on an existing breakpoint. Equivalent to EDB's DialogBreakpoints condition button. The breakpoint will only trigger when the condition evaluates to true.

Args: params (BreakpointConditionInput): Condition - number (int): Breakpoint number - condition (str): Condition (empty to remove, e.g., 'eax == 0')

Returns: str: Condition update result

Inputs: params (required). Returns: result

edb_set_breakpoint_ignore_countA
Idempotent

Set the number of times a breakpoint should be ignored before stopping. Equivalent to GDB's ignore command. Useful for skipping a breakpoint N times (e.g., in a loop) before breaking.

Args: params (BreakpointIgnoreInput): Ignore - number (int): Breakpoint number - count (int): Skip count (0 = don't skip)

Returns: str: Ignore count result

Inputs: params (required). Returns: result

edb_set_catchpointA

Set a catchpoint for exceptions, syscalls, signals, or process events. Equivalent to EDB's catchpoint feature. Stops execution when the specified event occurs.

Args: params (CatchpointInput): Catchpoint - event (str): Event: throw, catch, syscall, signal, assert, exec, fork, vfork, load, unload - condition (str): Optional condition or syscall name/number

Returns: str: Catchpoint confirmation

Inputs: params (required). Returns: result

edb_set_current_threadA

Switch the debugger context to a different thread. All subsequent commands apply to the selected thread.

Args: params (ThreadId): Thread ID - thread_id (int): Thread ID to switch to

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_set_debug_outputA
DestructiveIdempotent

Enable or disable GDB internal debug output. Equivalent to EDB's Debug Logger panel. Shows detailed GDB internals for troubleshooting: target events, breakpoint insertion, stepping, etc. Available categories: infrun, lin-lwp, remote, serial, target, event, expression, overlay, frame, thread.

Args: params (DebugOutputInput): Debug settings - category (str): Debug category (empty to list available) - enable (bool): True=on, False=off (default: True)

Returns: str: Debug output status

Inputs: params (required). Returns: result

edb_set_environment_variableA
DestructiveIdempotent

Set an environment variable for the debugged process. Equivalent to EDB's process environment configuration. Variables set here are passed to the program when it runs.

Args: params (EnvironmentInput): Variable - name (str): Variable name (e.g., 'LD_PRELOAD', 'PATH') - value (str): Variable value

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_set_hardware_breakpointB

Set a hardware-assisted breakpoint using CPU debug registers. Useful for ROM, flash, or self-modifying code regions.

Args: params (BreakpointInput): Location - location (str): Address or function name

Returns: str: Hardware breakpoint information

Inputs: params (required). Returns: result

edb_set_memory_permissionsA
DestructiveIdempotent

Set memory permissions for a region (read/write/execute). Equivalent to EDB's DialogMemoryRegions permission checkboxes. Uses GDB's mem command to define memory region attributes.

Args: params (MemoryPermissionsInput): Permissions - address (str): Start address - permissions (str): Permissions: none, r, w, x, rw, rx, wx, rwx - size (int): Region size (default: 4096)

Returns: str: Permission change confirmation

Inputs: params (required). Returns: result

edb_set_registerA
Destructive

Modify a CPU register value. Useful for patching execution flow or testing conditions.

Args: params (RegisterSetInput): Register modification - name (str): Register name (e.g., 'rax', 'rip') - value (str): New value in hex (e.g., '0x7fff00001000')

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_set_session_loggingA
DestructiveIdempotent

Log all GDB input/output to a file for debugging or record-keeping. Useful for creating session transcripts and debugging GDB interactions.

Args: params (SessionLoggingInput): Logging - file_path (str): Log file path (default: gdb.log) - enable (bool): Enable (True) or disable (False) logging

Returns: str: Logging status

Inputs: params (required). Returns: result

edb_set_trace_pointA

Set a trace point (logging breakpoint) that prints a message and continues without stopping execution. Useful for tracing function calls and variable changes without interrupting the program flow.

Args: params (ConditionalLogInput): Trace configuration - location (str): Breakpoint location (function, address, or file:line) - log_message (str): Message to print (use $reg for register values)

Returns: str: Trace point number and details

Inputs: params (required). Returns: result

edb_set_ttyA
DestructiveIdempotent

Set the terminal device for the debugged program's I/O. Equivalent to EDB's TTY configuration in DialogOptions. The program's stdin/stdout/stderr will be redirected to this TTY.

Args: params (TTYInput): Terminal - tty_path (str): TTY device path (e.g., '/dev/pts/0')

Returns: str: TTY configuration result

Inputs: params (required). Returns: result

edb_set_variableA
Destructive

Modify a variable's value in the current scope. Useful for altering program behavior during debugging.

Args: params (VariableInput): Variable modification - name (str): Variable name (e.g., 'x', 'error_flag') - value (str): New value (e.g., '0', '42', '"hello"')

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_set_watchpointA

Set a watchpoint to monitor memory access. Three modes:

  • 'write': stops when value changes (default)

  • 'read': stops when value is read

  • 'access': stops on both read and write

Args: params (WatchpointInput): Watchpoint configuration - expression (str): E.g., 'x', '*0x7fff0000', 'my_global' - watch_type (str): 'write', 'read', or 'access' (default: 'write')

Returns: str: Watchpoint details

Inputs: params (required). Returns: result

edb_set_working_directoryA
Idempotent

Set the working directory for the debugger and debugged process. Equivalent to EDB's actionApplication_Working_Directory. Useful for programs that need to load files from a specific directory.

Args: params (WorkingDirectoryInput): Directory - directory (str): Working directory path

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_show_configurationA
Read-onlyIdempotent

Display current debugger configuration settings. Uses GDB's show command to query various settings.

Args: params (ShowConfigInput): Query - setting (str): Setting name (e.g., 'architecture', 'follow-fork-mode')

Returns: str: Current configuration value

Inputs: params (required). Returns: result

edb_signal_handlingA
DestructiveIdempotent

Configure how GDB handles signals (stop, print, pass to program). Equivalent to EDB's signal handling in DebuggerCore. When action is empty, queries current handling for the signal.

Args: params (SignalHandlingInput): Signal settings - signal (str): Signal name (e.g., SIGSEGV, SIGINT, SIGTRAP) - action (str): Action: stop, nostop, print, noprint, pass, nopass, ignore

Returns: str: Signal handling configuration

Inputs: params (required). Returns: result

edb_stack_modifyA
Destructive

Modify the value at the top of the stack without changing RSP. Equivalent to EDB's Stack context menu → Modify. Writes a new value to the current stack pointer location.

Args: params (StackModifyInput): New value - value (str): New value (e.g., '0xdeadbeef')

Returns: str: Result

Inputs: params (required). Returns: result

edb_stack_popA
Destructive

Pop a value from the program stack (reads value, increments RSP). Equivalent to EDB's Stack context menu → Pop. Returns the popped value and modifies the target process RSP register.

Returns: str: Popped value and result

Inputs: no named parameters. Returns: result

edb_stack_pushA
Destructive

Push a value onto the program stack (decrements RSP, writes value). Equivalent to EDB's Stack context menu → Push. Modifies the target process stack and register state.

Args: params (StackPushInput): Push value - value (str): Value to push (e.g., '0x1234', '&main')

Returns: str: Result

Inputs: params (required). Returns: result

edb_step_instructionA

Step a single instruction (assembly-level), not a source line. Equivalent to EDB's action_Single_Step. Unlike edb_step_into which steps by source line, this steps by individual CPU instruction.

Args: params (StepInstructionInput): Count - count (int): Number of instructions to step (default: 1)

Returns: str: Step result with current instruction

Inputs: params (required). Returns: result

edb_step_intoA

Execute one machine instruction, stepping into function calls. If the current instruction is a call, execution enters the called function.

Returns: str: JSON with address, function, file, line after stepping

Inputs: no named parameters. Returns: result

edb_step_outA

Execute until the current function returns to its caller.

Returns: str: Location where execution stopped

Inputs: no named parameters. Returns: result

edb_step_overA

Execute one machine instruction, treating calls as atomic. If the instruction is a call, the entire called function runs then stops.

Returns: str: JSON with address, function, file, line after stepping

Inputs: no named parameters. Returns: result

edb_step_over_instructionA

Step over a single instruction (assembly-level), skipping calls. Equivalent to GDB's nexti command. Unlike edb_step_over (source line) and edb_step_instruction (step INTO calls), this steps over calls at the instruction level.

Args: params (StepOverInstructionInput): Count - count (int): Number of instructions (default: 1)

Returns: str: Step result

Inputs: params (required). Returns: result

edb_string_referencesA
Read-onlyIdempotent

Find all code and data references to a string or address in the binary. Searches function names, variable names, and source files for the given string. Useful for tracing how a particular value or string is used in the program.

Args: params (StringRefInput): Search target - string_or_address (str): String content (e.g., 'password') or hex address

Returns: str: Matching functions, variables, and sources

Inputs: params (required). Returns: result

edb_trace_showA
Read-onlyIdempotent

Show execution trace status, frames, and collected data.

Inputs: no named parameters. Returns: result

edb_trace_startA

Start an execution trace at an address/function. Records every instruction execution.

Inputs: params (required). Returns: result

edb_trace_stopA
Idempotent

Stop the current execution trace session.

Inputs: no named parameters. Returns: result

edb_unset_environment_variableA
DestructiveIdempotent

Remove an environment variable from the debugged process. Useful for clearing variables that may affect program behavior.

Args: params (EnvironmentUnsetInput): Variable name - name (str): Variable name to unset

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_va_to_file_offsetA
Read-onlyIdempotent

Convert a virtual address in the loaded process to the corresponding file offset in the binary on disk. Essential for applying patches back to the binary file.

Args: params (VirtualAddressInput): Virtual address - address (str): Virtual address in hex (e.g., '0x400000')

Returns: str: File offset in hex

Inputs: params (required). Returns: result

edb_view_at_addressA
Read-onlyIdempotent

Navigate to and inspect an address across all views. Equivalent to EDB's viewInCpu() / viewInDump() / viewInStack() context menu actions. Shows disassembly, hex dump, register references, and code references for the given address.

Args: params (ViewAddressInput): Address - address (str): Address to view (e.g., '0x400000', 'main', '$rsp')

Returns: str: Combined view across all panels

Inputs: params (required). Returns: result

edb_watch_expressionA

Add an expression to the auto-display list. Evaluated and shown on every stop.

Inputs: params (required). Returns: result

edb_whatisA
Read-onlyIdempotent

Print the type of an expression (short form). Equivalent to GDB's whatis command. Shows the type name without full definition (unlike edb_ptype).

Args: params (PtypeInput): Expression - expression (str): Expression (e.g., 'main', 'argc')

Returns: str: Type name

Inputs: params (required). Returns: result

edb_write_memoryA
Destructive

Write a value to a memory address. Use for patching code or data.

Args: params (MemoryWriteInput): Memory write - address (str): Target address (e.g., '0x400000') - data (str): Data to write (e.g., '0x90' for NOP)

Returns: str: Confirmation

Inputs: params (required). Returns: result

edb_write_memory_bytesA
Destructive

Write raw hex bytes to memory starting at an address. Useful for patching multiple bytes at once (e.g., NOP sled or shellcode).

Args: params (MemoryWriteBytesInput): Raw byte write - address (str): Target address (e.g., '0x400000') - hex_bytes (str): Hex bytes (e.g., '90 90 90' or '0x90 0x90 0x90')

Returns: str: Confirmation of byte count written

Inputs: params (required). Returns: result

pwntools_alignB
Read-onlyIdempotent

Calculate aligned value (up/down) for a given alignment boundary.

Inputs: params (required). Returns: result

pwntools_analyze_elfA
Read-onlyIdempotent

Analyze an ELF binary using pwntools — entry point, PIE/NX/RELRO/Canary, sections, symbols, PLT/GOT, segments.

Inputs: params (required). Returns: result

pwntools_asmA
Read-onlyIdempotent

Assemble assembly instructions into hex bytes using pwntools + keystone.

Inputs: params (required). Returns: result

pwntools_bitsC
Read-onlyIdempotent

Get or set a specific bit in an integer.

Inputs: params (required). Returns: result

pwntools_build_rop_chainC
Read-onlyDestructive

Build a ROP chain to call a target function with arguments using pwntools ROP.

Inputs: params (required). Returns: result

pwntools_checksecA
Read-onlyIdempotent

Check security properties of an ELF binary: RELRO, Canary, NX, PIE, RPATH/RUNPATH, FORTIFY.

Inputs: params (required). Returns: result

pwntools_constgrepA
Read-onlyIdempotent

Search pwntools/ELF constants by name or value.

Inputs: params (required). Returns: result

pwntools_contextC
Read-onlyIdempotent

View or modify pwntools global context (arch, os, endian, log_level).

Inputs: params (required). Returns: result

pwntools_cyclicA
Read-onlyIdempotent

Generate a cyclic pattern for buffer overflow offset discovery.

Inputs: params (required). Returns: result

pwntools_cyclic_findB
Read-onlyIdempotent

Find the offset of a value within a cyclic pattern.

Inputs: params (required). Returns: result

pwntools_disasmA
Read-onlyIdempotent

Disassemble raw hex bytes into assembly instructions using pwntools + capstone.

Inputs: params (required). Returns: result

pwntools_elf_depsA
Read-onlyIdempotent

List shared library dependencies of an ELF binary (DT_NEEDED entries).

Inputs: params (required). Returns: result

pwntools_elf_diffA
Read-onlyIdempotent

Compare two ELF binaries: sections, segments, symbols.

Inputs: params (required). Returns: result

pwntools_elf_gotB
Read-onlyIdempotent

Parse Global Offset Table (GOT) entries from an ELF binary.

Inputs: params (required). Returns: result

pwntools_elf_notesA
Read-onlyIdempotent

Show ELF notes: build ID, ABI tag, property notes.

Inputs: params (required). Returns: result

pwntools_elf_patchB
Destructive

Patch bytes in an ELF binary at a given file offset. Creates a backup.

Inputs: params (required). Returns: result

pwntools_elf_pltA
Read-onlyIdempotent

Parse Procedure Linkage Table (PLT) entries from an ELF binary.

Inputs: params (required). Returns: result

pwntools_elf_readA
Read-onlyIdempotent

Read bytes from an ELF binary at a section or address, with hex dump output.

Inputs: params (required). Returns: result

pwntools_elf_relocsA
Read-onlyIdempotent

Show ELF relocation entries (GOT/PLT fixups and absolute relocations).

Inputs: params (required). Returns: result

pwntools_elf_sectionsA
Read-onlyIdempotent

List all ELF sections with detailed info: type, flags, address, offset, size, alignment.

Inputs: params (required). Returns: result

pwntools_elf_segmentsB
Read-onlyIdempotent

List ELF program headers (segments): type, flags, offset, vaddr, filesz, memsz.

Inputs: params (required). Returns: result

pwntools_elf_stringsB
Read-onlyIdempotent

Extract printable strings from an ELF binary, optionally filtered by section.

Inputs: params (required). Returns: result

pwntools_elf_symbolsA
Read-onlyIdempotent

Search symbols in an ELF binary by regex pattern and type.

Inputs: params (required). Returns: result

pwntools_encB
Read-onlyIdempotent

Encode shellcode using pwntools encoders (alphanumeric, null_free, xor).

Inputs: params (required). Returns: result

pwntools_enhexA
Read-onlyIdempotent

Encode raw bytes to hexadecimal string. Supports \x escapes.

Inputs: params (required). Returns: result

pwntools_entropyA
Read-onlyIdempotent

Calculate byte entropy (Shannon) of a file or memory region. Useful for detecting encryption, packing, or embedded data.

Inputs: params (required). Returns: result

pwntools_eropeA
Read-onlyIdempotent

Search ROP gadgets grouped by type: syscall, stack_pivot, call, jump.

Inputs: params (required). Returns: result

pwntools_find_ropA
Read-onlyIdempotent

Search for ROP gadgets in an ELF binary using pwntools ROP engine.

Inputs: params (required). Returns: result

pwntools_flatB
Read-onlyIdempotent

Pack a list of values/addresses into flat bytes using pwntools flat().

Inputs: params (required). Returns: result

pwntools_fmtstr_payloadB
Read-onlyIdempotent

Generate a format string exploit payload for arbitrary writes.

Inputs: params (required). Returns: result

pwntools_hexdumpA
Read-onlyIdempotent

Display a formatted hex dump using pwntools hexdump styling.

Inputs: params (required). Returns: result

pwntools_log_levelA
Read-onlyIdempotent

Set pwntools log verbosity. Levels: debug, info, warning, error.

Inputs: level (required). Returns: result

pwntools_make_elfB
Read-onlyDestructive

Compile assembly code into an ELF binary using pwntools make_elf.

Inputs: params (required). Returns: result

pwntools_packA
Read-onlyIdempotent

Pack an integer into bytes (e.g., p64, p32, p16).

Inputs: params (required). Returns: result

pwntools_processC
Destructive

Start a local process for interaction (pwntools tube).

Inputs: params (required). Returns: result

pwntools_remoteA
Destructive

Connect to a remote TCP service (pwntools tube).

Inputs: params (required). Returns: result

pwntools_rolA
Read-onlyIdempotent

Rotate an integer value left by N bits.

Inputs: params (required). Returns: result

pwntools_rorA
Read-onlyIdempotent

Rotate an integer value right by N bits.

Inputs: params (required). Returns: result

pwntools_shellcraftC
Read-onlyIdempotent

Generate shellcode using pwntools shellcraft module.

Inputs: params (required). Returns: result

pwntools_sigreturnB
Read-onlyIdempotent

Generate a Sigreturn-Oriented Programming (SROP) frame using pwntools SigreturnFrame.

Inputs: params (required). Returns: result

pwntools_tube_closeB
Destructive

Close an active tube connection.

Inputs: params (required). Returns: result

pwntools_tube_listA
Read-onlyIdempotent

List all active tube connections.

Inputs: no named parameters. Returns: result

pwntools_tube_recvB
Read-onlyIdempotent

Receive data from an active tube.

Inputs: params (required). Returns: result

pwntools_tube_recvlineA
Read-onlyIdempotent

Receive a single line from an active tube.

Inputs: params (required). Returns: result

pwntools_tube_recvuntilA
Read-onlyIdempotent

Receive data from a tube until a pattern is found.

Inputs: params (required). Returns: result

pwntools_tube_sendB
Destructive

Send raw data to an active tube (process or remote).

Inputs: params (required). Returns: result

pwntools_tube_sendlineA
Destructive

Send a line (with newline) to an active tube.

Inputs: params (required). Returns: result

pwntools_unhexA
Read-onlyIdempotent

Decode hexadecimal string back to raw bytes.

Inputs: params (required). Returns: result

pwntools_unpackA
Read-onlyIdempotent

Unpack bytes into an integer (e.g., u64, u32, u16).

Inputs: params (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 207 tools

    Disambiguation3/5

    Many tools have overlapping purposes (e.g., multiple disassembly, stepping, and memory writing tools), but the descriptions and prefixes (edb_ vs pwntools_) help differentiate them. Still, an agent may struggle to choose the right tool among 207 options.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with clear 'edb_' or 'pwntools_' prefixes. The naming is predictable and uniform, making it easy to infer tool purpose.

    Tool Count1/5

    With 207 tools, the server is far beyond the typical scope for an MCP server. This overwhelming count likely leads to agent confusion and inefficiency, with many highly specialized tools that could be merged.

    Completeness5/5

    The tool surface is extremely comprehensive, covering virtually all aspects of debugging: breakpoints, stepping, memory manipulation, analysis, ROP, pwntools integration, remote debugging, and session management. No obvious gaps for the intended domain.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables AI-assisted reverse engineering and debugging through x64dbg integration. Provides 40+ tools for breakpoint management, memory operations, register manipulation, code analysis, process control, and advanced debugging features.
      22
      -
    • A
      license
      B
      quality
      D
      maintenance
      Enables AI assistants to control GDB debugger via MCP protocol for local and remote debugging, supporting CTF Pwn, crash analysis, and ELF inspection.
      13
      1
      MIT