pwndbg-lldb-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pwndbg_get_eventsA | Query debugger events recorded for a session. Returns events such as breakpoint hits, signals, crashes, and process exits detected during command execution or by the background monitor. Args: session_id: The UUID of the session. limit: Maximum number of events to return (default 50). event_type: Filter by event type (e.g. "breakpoint_hit", "signal", "crash", "exited", "stopped"). None returns all types. |
| pwndbg_start_monitorA | Start the background event monitor for a session. The monitor watches for asynchronous debugger events (breakpoint hits, signals, crashes) between tool calls. Events are recorded in the session's event log and trigger MCP resource-updated notifications. This is optional — all core debugging functionality works without the monitor. The monitor is useful for long-running programs where events may occur outside of active tool calls. Args: session_id: The UUID of the session. |
| pwndbg_stop_monitorC | Stop the background event monitor for a session. Args: session_id: The UUID of the session. |
| pwndbg_startA | Start a new LLDB session with pwndbg loaded. Spawns an LLDB process, optionally loads pwndbg via Args:
lldb_path: Path to the LLDB binary (default: "lldb").
working_dir: Working directory for the session.
pwndbg_path: Path to pwndbg's lldbinit.py entry point. If provided,
pwndbg will be loaded automatically via See: https://pwndbg.re/2025.05.30/reference/pwndbg/dbg/lldb/ |
| pwndbg_terminateA | Terminate a pwndbg session and free all resources. Args: session_id: The UUID of the session to terminate. |
| pwndbg_list_sessionsA | List all active pwndbg sessions with their IDs, targets, and working directories. |
| pwndbg_commandA | Execute an arbitrary LLDB or pwndbg command (escape hatch). Use this for any command not exposed as a dedicated tool. Both native LLDB commands and pwndbg-registered commands are supported. Args: session_id: The UUID of the session. command: The full command string to execute. See: https://pwndbg.re/2025.05.30/reference/pwndbg/dbg/lldb/ |
| pwndbg_loadC | Load a program into the debugger. Sets the target executable and optional arguments. The program path is resolved relative to the session's working directory if not absolute. Args: session_id: The UUID of the session. program: Path to the executable. arguments: Optional list of program arguments. |
| pwndbg_attachB | Attach to a running process by PID. Args: session_id: The UUID of the session. pid: Process ID to attach to. |
| pwndbg_load_coreB | Load a core dump file for post-mortem analysis. Args: session_id: The UUID of the session. program: Path to the executable that generated the core. core_path: Path to the core dump file. |
| pwndbg_runA | Run the loaded program from the beginning. Blocks until the process stops (breakpoint, signal, exit) or times out. Streams intermediate debugger output as MCP progress/log notifications. Args: session_id: The UUID of the session. timeout: Maximum seconds to wait for the process to stop (default 30). |
| pwndbg_entryA | Start the program and stop at its ELF entry point address. pwndbg command: entry Source: pwndbg/commands/start.py Category: Start Unlike 'start' (GDB-only), 'entry' works on LLDB. It sets a temporary breakpoint at the binary's entry point and runs. Args: session_id: The UUID of the session. timeout: Maximum seconds to wait (default 30). |
| pwndbg_continueA | Continue program execution until the next breakpoint or exit. Blocks until the process stops or times out. Streams intermediate debugger output as MCP progress/log notifications. Args: session_id: The UUID of the session. timeout: Maximum seconds to wait for the process to stop (default 30). |
| pwndbg_stepA | Step into the next source line or instruction. Args: session_id: The UUID of the session. instructions: If True, step a single machine instruction (si) instead of a source line (s). |
| pwndbg_nextA | Step over the next source line or instruction (does not enter calls). Args: session_id: The UUID of the session. instructions: If True, step over a single machine instruction (ni) instead of a source line (n). |
| pwndbg_finishA | Execute until the current function returns. Blocks until the function returns or times out. Streams intermediate debugger output as MCP progress/log notifications. Args: session_id: The UUID of the session. timeout: Maximum seconds to wait (default 30). |
| pwndbg_killB | Kill the running process. Args: session_id: The UUID of the session. |
| pwndbg_nextjmpA | Break at the next jump instruction. pwndbg command: nextjmp (alias: nextjump) Source: pwndbg/commands/next.py Category: Step/Next/Continue Continues execution until the next jump-type instruction (jmp, je, jne, etc.) is reached, which is useful for tracing control flow decisions. Args: session_id: The UUID of the session. timeout: Maximum seconds to wait (default 30). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/next/ |
| pwndbg_nextcallA | Break at the next call instruction, optionally filtered by symbol regex. pwndbg command: nextcall Source: pwndbg/commands/next.py Category: Step/Next/Continue Args: session_id: The UUID of the session. symbol_regex: Optional regex to match the call target symbol name. timeout: Maximum seconds to wait (default 30). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/next/ |
| pwndbg_nextretA | Break at the next return-like instruction (ret, retf, iret, sysret). pwndbg command: nextret Source: pwndbg/commands/next.py Category: Step/Next/Continue Args: session_id: The UUID of the session. timeout: Maximum seconds to wait (default 30). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/next/ |
| pwndbg_stepretA | Step to the next return instruction (single-steps until ret is found). pwndbg command: stepret Source: pwndbg/commands/next.py Category: Step/Next/Continue Unlike nextret which sets a breakpoint, this command single-steps through every instruction until a return instruction is reached. Args: session_id: The UUID of the session. timeout: Maximum seconds to wait (default 30). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/next/ |
| pwndbg_nextproginstrA | Break at the next instruction belonging to the running program. pwndbg command: nextproginstr Source: pwndbg/commands/next.py Category: Step/Next/Continue Useful for skipping over library code to reach the next instruction that belongs to the main binary. Args: session_id: The UUID of the session. timeout: Maximum seconds to wait (default 30). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/next/ |
| pwndbg_stepoverB | Set a breakpoint on the instruction after the current one and continue. pwndbg command: stepover (alias: so) Source: pwndbg/commands/next.py Category: Step/Next/Continue This is pwndbg's enhanced step-over that works at the instruction level by setting a breakpoint on the next instruction address. Args: session_id: The UUID of the session. addr: Optional address to step over at (defaults to current PC). timeout: Maximum seconds to wait (default 30). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/next/ |
| pwndbg_nextsyscallA | Break at the next syscall instruction (without taking branches). pwndbg command: nextsyscall (alias: nextsc) Source: pwndbg/commands/next.py Category: Step/Next/Continue Args: session_id: The UUID of the session. timeout: Maximum seconds to wait (default 30). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/next/ |
| pwndbg_stepsyscallA | Step to the next syscall instruction (follows branches). pwndbg command: stepsyscall (alias: stepsc) Source: pwndbg/commands/next.py Category: Step/Next/Continue Unlike nextsyscall, this follows branches by single-stepping through all instructions until a syscall is found. Args: session_id: The UUID of the session. timeout: Maximum seconds to wait (default 30). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/next/ |
| pwndbg_stepuntilasmA | Step until a specific assembly instruction is reached. pwndbg command: stepuntilasm Source: pwndbg/commands/next.py Category: Step/Next/Continue Single-steps until an instruction matching the given mnemonic (and optionally operand string) is found. This can be slow, so the default timeout is 60s. Args: session_id: The UUID of the session. mnemonic: The instruction mnemonic to match (e.g. "syscall", "call", "mov"). op_str: Optional operand string to match. timeout: Maximum seconds to wait (default 60). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/next/ |
| pwndbg_set_breakpointA | Set a breakpoint at the given location, optionally with a condition. Args: session_id: The UUID of the session. location: Function name, address, or file:line to break at. condition: Optional condition expression for the breakpoint. |
| pwndbg_breakpoint_listA | List all breakpoints in the current session. Args: session_id: The UUID of the session. |
| pwndbg_breakpoint_deleteA | Delete a breakpoint by its ID number. Args: session_id: The UUID of the session. breakpoint_id: The numeric breakpoint ID to delete. |
| pwndbg_set_breakpoint_advancedA | Set a breakpoint with full control over address, module, auto-continue, and naming. Supports all common breakpoint styles:
Args: session_id: The UUID of the session. address: Address or file:line expression. Mutually exclusive with name. name: Symbol name to break on. Mutually exclusive with address. module: Restrict breakpoint to this module (e.g., "Xmllite"). offset: Module-relative offset (hex string). Requires module to be set. auto_continue: If True, breakpoint auto-continues (counts hits without stopping). bp_name: Assign a human-readable name to the breakpoint for later reference. condition: Optional condition expression (breakpoint only fires if true). one_shot: If True, breakpoint is deleted after first hit. |
| pwndbg_breakpoint_list_parsedA | List all breakpoints with structured, machine-parseable output. Returns a JSON-formatted list of breakpoints, each with: id, name, address, module, resolved, hit_count, auto_continue, enabled This is more reliable than parsing raw Args: session_id: The UUID of the session. |
| pwndbg_command_batchA | Execute multiple LLDB/pwndbg commands sequentially in a single call. This avoids multiple MCP round-trips for setup operations like setting several breakpoints, configuring settings, or running a sequence of inspection commands. Args: session_id: The UUID of the session. commands: List of command strings to execute in order. Returns: Combined output from all commands, with clear separators. |
| pwndbg_run_until_stopA | Run or continue the program and block until it stops or exits. Waits until the process reaches a stopped state (breakpoint, crash, signal) or exits, then returns the stop reason along with register context. Streams intermediate debugger output as MCP progress/log notifications so the client can observe execution in real-time. Args: session_id: The UUID of the session. action: "run" to start from beginning, "continue" to resume. timeout: Maximum seconds to wait for the process to stop. |
| pwndbg_watchpointA | Set a watchpoint on a memory address or variable. Args: session_id: The UUID of the session. expression: The variable or address expression to watch. watch_type: Type of access to watch — "read", "write", or "read_write". |
| pwndbg_contextA | Display the pwndbg context — registers, disassembly, stack, backtrace, etc. pwndbg command: context (alias: ctx) Source: pwndbg/commands/context.py Category: Context This is pwndbg's signature command. It shows a unified view of the current debugger state including registers, nearby disassembly, stack contents, backtrace, and any additional context sections configured by the user. Args: session_id: The UUID of the session. sections: Optional space-separated list of sections to show (e.g. "regs disasm stack backtrace"). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/context/ |
| pwndbg_contextoutputB | Configure where a context section's output is sent. pwndbg command: contextoutput (alias: ctx-out) Source: pwndbg/commands/context.py Category: Context Args: session_id: The UUID of the session. section: The context section name (e.g. "regs", "disasm", "stack"). value: The output target or configuration value. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/context/ |
| pwndbg_contextwatchA | Add a watched expression to the context display. pwndbg command: contextwatch (alias: ctx-watch, cwatch) Source: pwndbg/commands/context.py Category: Context Adds an expression that will be evaluated and displayed every time the context refreshes. Args: session_id: The UUID of the session. expression: The expression to watch (e.g. "$rax", "(int)$rsp"). cmd: Optional command to use for display (e.g. "hexdump", "telescope"). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/context/ |
| pwndbg_contextunwatchB | Remove a watched expression from the context display. pwndbg command: contextunwatch (alias: ctx-unwatch, cunwatch) Source: pwndbg/commands/context.py Category: Context Args: session_id: The UUID of the session. num: The watch number to remove. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/context/ |
| pwndbg_telescopeA | Recursively dereference pointers starting at an address (default: $sp). pwndbg command: telescope Source: pwndbg/commands/telescope.py Category: Memory Telescope is one of pwndbg's most useful commands. It reads pointer-sized values from memory and follows the chain of dereferences, showing the ultimate value (string, address, symbol, etc.). Args: session_id: The UUID of the session. address: Starting address or register (default: $sp). count: Number of pointer-sized entries to show. reverse: If True, show entries in reverse order. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/telescope/ |
| pwndbg_stackB | Show stack contents using telescope-style dereference display. pwndbg command: stack Source: pwndbg/commands/telescope.py Category: Stack Equivalent to Args: session_id: The UUID of the session. count: Number of entries to show (default: 8). offset: Offset from $sp in pointer-sized units. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/telescope/ |
| pwndbg_stackfB | Show the entire current stack frame contents. pwndbg command: stackf Source: pwndbg/commands/telescope.py Category: Stack Dereferences the stack from $sp to $bp, showing the entire current stack frame. Args: session_id: The UUID of the session. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/telescope/ |
| pwndbg_hexdumpB | Hex dump memory at the specified address. pwndbg command: hexdump Source: pwndbg/commands/hexdump.py Category: Memory Shows memory in canonical hex+ASCII format, similar to xxd/hexdump. Args: session_id: The UUID of the session. address: Address or register to dump from (default: $sp). count: Number of bytes to dump. code: Output format — "py" for Python bytes literal, "c" for C array. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/hexdump/ |
| pwndbg_vmmapA | Print the virtual memory map of the process. pwndbg command: vmmap (aliases: lm, address, vprot, libs) Source: pwndbg/commands/vmmap.py Category: Memory Shows all memory regions with their start/end addresses, permissions, and mapped file names. Can be filtered by address, module name, or permission flags. Args: session_id: The UUID of the session. filter_str: Optional filter — an address or module name substring. writable: If True, only show writable regions. executable: If True, only show executable regions. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/vmmap/ |
| pwndbg_searchA | Search process memory for byte sequences, strings, pointers, or integers. pwndbg command: search Source: pwndbg/commands/search.py Category: Memory Searches all mapped memory regions for the given value. Supports multiple search types and can be filtered to specific permission regions. Args: session_id: The UUID of the session. value: The value to search for. type: Search type — "bytes", "byte", "short", "dword", "qword", "pointer", "string". hex_encoded: If True, interpret value as hex-encoded bytes. executable: If True, only search executable regions. writable: If True, only search writable regions. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/search/ |
| pwndbg_xinfoB | Show extended information about an address — offsets from useful locations. pwndbg command: xinfo Source: pwndbg/commands/xinfo.py Category: Memory Displays what memory region the address belongs to, along with offsets from the base of the containing page, binary, stack, heap, etc. Args: session_id: The UUID of the session. address: Address to inspect (default: $pc). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/xinfo/ |
| pwndbg_distanceA | Calculate the distance between two addresses. pwndbg command: distance Source: pwndbg/commands/distance.py Category: Memory If only one argument is given, prints the offset from the address's page base. Useful for calculating offsets for exploits. Args: session_id: The UUID of the session. a: First address or expression. b: Optional second address or expression. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/distance/ |
| pwndbg_probeleakA | Pointer-scan memory for possible information leaks. pwndbg command: probeleak Source: pwndbg/commands/probeleak.py Category: Memory Scans memory at the given address for values that look like pointers into known regions (stack, heap, libc, binary, etc.), which could indicate exploitable information leaks. Args: session_id: The UUID of the session. address: Address to start scanning (default: $sp). count: Number of bytes to scan (default: 0x40). max_distance: Maximum distance for pointer matching (0 = unlimited). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/probeleak/ |
| pwndbg_leakfindA | Attempt to find a pointer leak chain from a starting address. pwndbg command: leakfind Source: pwndbg/commands/leakfind.py Category: Memory Walks pointer chains to find paths from a controlled region to interesting targets (libc, stack, etc.). Extremely useful for exploit development. Args: session_id: The UUID of the session. address: Starting address (default: $sp). page_name: Target page name to reach. max_depth: Maximum chain depth (default: 4). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/leakfind/ |
| pwndbg_p2pB | Pointer-to-pointer chain search across memory mappings. pwndbg command: p2p Source: pwndbg/commands/p2p.py Category: Memory Finds chains of pointers between different memory regions, useful for discovering pivot chains in exploit development. Args: session_id: The UUID of the session. mapping_names: Optional comma-separated list of mapping name ranges to search. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/p2p/ |
| pwndbg_mprotectA | Call the mprotect syscall to change memory permissions. pwndbg command: mprotect Source: pwndbg/commands/mprotect.py Category: Memory Directly invokes mprotect(2) on the target process. Useful for making regions writable or executable during exploit development. Args: session_id: The UUID of the session. addr: Address of the memory region. length: Length of the region in bytes. prot: Protection flags (e.g. "7" for rwx, "5" for r-x). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/mprotect/ |
| pwndbg_mmapA | Call the mmap syscall to allocate new memory in the target process. pwndbg command: mmap Source: pwndbg/commands/mmap.py Category: Memory Directly invokes mmap(2) on the target. Useful for creating executable shellcode regions or scratch memory during exploitation. Args: session_id: The UUID of the session. addr: Desired address (0 for OS-chosen). length: Size of mapping (default: 0x1000). prot: Protection flags (default: "7" = rwx). flags: mmap flags (default: "0x22" = MAP_PRIVATE | MAP_ANONYMOUS). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/mmap/ |
| pwndbg_info_registersB | Display CPU registers. Args: session_id: The UUID of the session. register: Optional specific register name to read. |
| pwndbg_cpsrA | Display ARM CPSR / xPSR / PSTATE register bits. pwndbg command: cpsr (aliases: xpsr, pstate) Source: pwndbg/commands/cpsr.py Category: Register Arch: ARM, AArch64 only Decodes the ARM condition flags register into individual flag bits with human-readable names. Args: session_id: The UUID of the session. cpsr_value: Optional CPSR value to decode (default: read from register). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/cpsr/ |
| pwndbg_setflagB | Modify a CPU flag in the flags register. pwndbg command: setflag (alias: flag) Source: pwndbg/commands/flags.py Category: Register Allows setting individual flag bits (ZF, CF, SF, OF, etc.) without modifying the entire flags register. Args: session_id: The UUID of the session. flag: Flag name (e.g. "ZF", "CF", "SF", "OF"). value: Value to set (0 or 1). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/flags/ |
| pwndbg_nearpcB | Disassemble instructions near the PC with enhanced annotation. pwndbg command: nearpc (aliases: pdisass, u) Source: pwndbg/commands/nearpc.py Category: Disassemble pwndbg's enhanced disassembler that shows resolved symbols, register values, memory dereferences, and branch target annotations inline with the disassembly. Args: session_id: The UUID of the session. address: Address to disassemble at (default: $pc). lines: Number of instructions to show. emulate: If True, emulate instructions to show predicted register values. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/nearpc/ |
| pwndbg_emulateA | Disassemble with instruction emulation to predict register/memory state. pwndbg command: emulate Source: pwndbg/commands/nearpc.py Category: Disassemble Like nearpc but with emulation enabled by default. Shows what registers and memory values would be after each instruction executes, without actually executing them. Args: session_id: The UUID of the session. address: Address to start emulation (default: $pc). lines: Number of instructions to emulate. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/nearpc/ |
| pwndbg_disassembleC | Disassemble code using LLDB's native disassembler. Args: session_id: The UUID of the session. location: Function name or address to disassemble. count: Number of instructions (default: 10). |
| pwndbg_argcA | Print the argument count (argc) of the running program. pwndbg command: argc Source: pwndbg/commands/argv.py Category: Linux/libc/ELF Args: session_id: The UUID of the session. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/argv/ |
| pwndbg_argvA | Print the argument vector (argv) of the running program. pwndbg command: argv Source: pwndbg/commands/argv.py Category: Linux/libc/ELF Args: session_id: The UUID of the session. index: Optional specific argv index to print. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/argv/ |
| pwndbg_envpA | Print environment variables of the running program. pwndbg command: envp (aliases: env, environ) Source: pwndbg/commands/argv.py Category: Linux/libc/ELF Args: session_id: The UUID of the session. name: Optional specific environment variable name. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/argv/ |
| pwndbg_dumpargsA | Dump determined arguments for the current call/syscall instruction. pwndbg command: dumpargs (alias: args) Source: pwndbg/commands/dumpargs.py Category: Misc Automatically detects the calling convention and displays function arguments with their resolved values at the current call site. Args: session_id: The UUID of the session. force: If True, force argument dumping even if not at a call site. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/dumpargs/ |
| pwndbg_retaddrB | Print stack addresses that contain return addresses. pwndbg command: retaddr Source: pwndbg/commands/retaddr.py Category: Stack Scans the stack for values that look like return addresses (pointers into executable regions), useful for finding ROP pivot targets. Args: session_id: The UUID of the session. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/retaddr/ |
| pwndbg_canaryA | Display the stack canary value. pwndbg command: canary Source: pwndbg/commands/canary.py Category: Stack Shows the current stack canary (stack guard) value. The canary is used by stack-smashing protection (SSP / -fstack-protector) to detect buffer overflows. Args: session_id: The UUID of the session. show_all: If True, show canary for all threads. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/canary/ |
| pwndbg_sigreturnA | Display the SigreturnFrame at a specific address. pwndbg command: sigreturn Source: pwndbg/commands/sigreturn.py Category: Misc Arch: x86-64, i386, aarch64, arm Parses and displays a sigreturn frame structure, which is used in SROP (Sigreturn-Oriented Programming) exploits. Args: session_id: The UUID of the session. address: Address of the sigreturn frame (default: auto-detect). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/sigreturn/ |
| pwndbg_valistB | Dump the arguments of a va_list (variadic argument list). pwndbg command: valist Source: pwndbg/commands/valist.py Category: Misc Args: session_id: The UUID of the session. addr: Address of the va_list structure. count: Number of arguments to dump (default: 8). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/valist/ |
| pwndbg_checksecA | Check binary security properties (RELRO, NX, canary, PIE, RPATH, etc.). pwndbg command: checksec Source: pwndbg/commands/checksec.py Category: Misc Analyzes the ELF binary for security mitigations. Shows RELRO level, stack canary, NX (non-executable stack), PIE (position-independent), RPATH/RUNPATH, Fortify, and other compiler/linker security features. Args: session_id: The UUID of the session. file: Optional path to check (default: loaded binary). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/checksec/ |
| pwndbg_elfsectionsB | Print ELF section mappings from the binary header. pwndbg command: elfsections Source: pwndbg/commands/elf.py Category: Linux/libc/ELF Shows all ELF sections (.text, .data, .bss, .got, .plt, etc.) with their addresses, sizes, and flags. Args: session_id: The UUID of the session. no_rebase: If True, show file offsets instead of rebased addresses. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/elf/ |
| pwndbg_gotpltB | Print symbols found in the .got.plt section. pwndbg command: gotplt Source: pwndbg/commands/elf.py Category: Linux/libc/ELF Shows the GOT/PLT entries with their current resolved values. Useful for identifying which library functions have been resolved by the dynamic linker. Args: session_id: The UUID of the session. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/elf/ |
| pwndbg_pltB | Print symbols found in Procedure Linkage Table sections. pwndbg command: plt Source: pwndbg/commands/elf.py Category: Linux/libc/ELF Args: session_id: The UUID of the session. all_symbols: If True, show all PLT symbols including internal ones. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/elf/ |
| pwndbg_gotB | Show the state of the Global Offset Table. pwndbg command: got Source: pwndbg/commands/got.py Category: Linux/libc/ELF Displays GOT entries with their current values, showing which entries point to the PLT stub (unresolved) vs actual library addresses (resolved). Args: session_id: The UUID of the session. filter_str: Optional filter string to match symbol names. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/got/ |
| pwndbg_piebaseA | Calculate the virtual address from a PIE-relative offset. pwndbg command: piebase Source: pwndbg/commands/pie.py Category: Linux/libc/ELF For PIE binaries, converts a file offset (RVA) to a runtime virtual address by adding the PIE base. Args: session_id: The UUID of the session. offset: Offset from PIE base to calculate (default: 0 = show base). module: Optional module name (default: main binary). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/pie/ |
| pwndbg_linkmapA | Show the dynamic linker's link map (loaded shared objects). pwndbg command: linkmap Source: pwndbg/commands/linkmap.py Category: Linux/libc/ELF Displays the linked list of loaded shared objects maintained by the dynamic linker (ld.so), showing base addresses and file paths. Args: session_id: The UUID of the session. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/linkmap/ |
| pwndbg_dtA | Dump type information, optionally overlaid on a memory address. pwndbg command: dt Source: pwndbg/commands/dt.py Category: Misc Displays the fields, offsets, and sizes of a struct/type. If an address is provided, reads the memory at that address and displays actual values for each field. Args: session_id: The UUID of the session. typename: The type name to inspect (e.g. "struct malloc_chunk"). address: Optional memory address to overlay the type onto. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/dt/ |
| pwndbg_heapA | Iteratively print chunks on a heap. pwndbg command: heap Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Walks the heap and prints each chunk's metadata (size, flags, fd/bk pointers for freed chunks). Defaults to the current thread's active heap. Args: session_id: The UUID of the session. addr: Optional arena or heap address. verbose: If True, show extended chunk details. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_arenaB | Print the contents of a malloc arena. pwndbg command: arena Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Shows the malloc_state structure fields including top chunk, bins, system_mem, and other arena metadata. Defaults to the current thread's arena. Args: session_id: The UUID of the session. addr: Optional arena address (default: current thread's arena). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_arenasB | List all arenas in the process. pwndbg command: arenas Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Args: session_id: The UUID of the session. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_binsA | Print all bin contents — fast, small, large, unsorted, and tcache. pwndbg command: bins Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Displays a unified view of all bin types in the ptmalloc2 allocator. Args: session_id: The UUID of the session. addr: Optional arena address. tcache_addr: Optional tcache address. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_fastbinsA | Print the contents of an arena's fastbins. pwndbg command: fastbins Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Fastbins are singly-linked LIFO free lists for small allocations (up to 0x80 bytes on 64-bit). Shows each fastbin index with its chain. Args: session_id: The UUID of the session. addr: Optional arena address. verbose: If True, show extended details. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_unsortedbinA | Print the contents of an arena's unsorted bin. pwndbg command: unsortedbin Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap The unsorted bin is a doubly-linked list where freed chunks go before being sorted into small/large bins. A key target for heap exploits. Args: session_id: The UUID of the session. addr: Optional arena address. verbose: If True, show extended details. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_smallbinsA | Print the contents of an arena's small bins. pwndbg command: smallbins Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Small bins hold chunks from 0x20 to 0x3F0 bytes (64-bit) in doubly-linked lists sorted by size. Args: session_id: The UUID of the session. addr: Optional arena address. verbose: If True, show extended details. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_largebinsA | Print the contents of an arena's large bins. pwndbg command: largebins Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Large bins hold chunks >= 0x400 bytes (64-bit) in doubly-linked lists sorted by size within each bin. Args: session_id: The UUID of the session. addr: Optional arena address. verbose: If True, show extended details. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_tcacheB | Print tcache contents for the current thread. pwndbg command: tcache Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Thread-local caching (tcache) was introduced in glibc 2.26. Each thread has 64 singly-linked bins for small allocations, providing fast thread-local allocation without arena locks. Args: session_id: The UUID of the session. addr: Optional tcache address. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_tcachebinsB | Print tcache bin entries (free list chains per size class). pwndbg command: tcachebins Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Args: session_id: The UUID of the session. addr: Optional tcache address. verbose: If True, show extended details. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_malloc_chunkC | Display detailed information about a specific malloc chunk. pwndbg command: malloc_chunk Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Shows the chunk header fields (prev_size, size, flags) and for freed chunks, the fd/bk pointers. Args: session_id: The UUID of the session. addr: Address of the malloc chunk. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_top_chunkA | Print information about the top chunk (wilderness) of an arena. pwndbg command: top_chunk Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap The top chunk is the last chunk in the heap, used to service allocations when no suitable freed chunk is available. Args: session_id: The UUID of the session. addr: Optional arena address. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_mpA | Print the mp_ (malloc parameters) struct contents. pwndbg command: mp Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Shows global malloc tuning parameters like mmap_threshold, trim_threshold, top_pad, etc. Args: session_id: The UUID of the session. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_vis_heap_chunksB | Visualize heap chunks with a colorful graphical representation. pwndbg command: vis_heap_chunks (alias: vis) Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Renders heap chunks as a visual map with color-coded regions showing chunk boundaries, headers, and data. One of pwndbg's most distinctive features for heap analysis. Args: session_id: The UUID of the session. addr: Optional starting address. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_try_freeA | Simulate what would happen if free() were called on an address. pwndbg command: try_free Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Walks through glibc's free() logic and reports which checks would pass or fail. Invaluable for debugging heap exploits — shows exactly why a crafted chunk would or wouldn't pass free()'s validation. Args: session_id: The UUID of the session. addr: Address to simulate freeing. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_find_fake_fastA | Find fake fastbin chunk candidates near a target address. pwndbg command: find_fake_fast Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Searches memory near the target for byte sequences that could be interpreted as valid fastbin chunk headers. Used to find targets for fastbin attacks (e.g. overwriting __malloc_hook). Args: session_id: The UUID of the session. target_address: Address to search near. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_hiA | Display heap information for a specific chunk address. pwndbg command: hi Source: pwndbg/commands/ptmalloc2.py Category: GLibc ptmalloc2 Heap Shows which bin a chunk belongs to, its neighbors, and allocation status. Args: session_id: The UUID of the session. addr: Address of the chunk. verbose: If True, show extended details. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/ptmalloc2/ |
| pwndbg_thread_listC | List all threads in the current process (LLDB native). Args: session_id: The UUID of the session. |
| pwndbg_thread_selectB | Select a specific thread and show its backtrace. Args: session_id: The UUID of the session. thread_id: The thread index to select. |
| pwndbg_threadsA | List all threads with pwndbg's enhanced formatting. pwndbg command: threads Source: pwndbg/commands/tls.py Category: Linux/libc/ELF Shows threads with their IDs, names, and current PC locations using pwndbg's enhanced display format. Args: session_id: The UUID of the session. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/tls/ |
| pwndbg_tlsC | Print the Thread Local Storage (TLS) base address. pwndbg command: tls Source: pwndbg/commands/tls.py Category: Linux/libc/ELF Shows the TLS base address and optionally the full TLS structure contents. The TLS contains thread-local variables, the stack canary, and other per-thread data. Args: session_id: The UUID of the session. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/tls/ |
| pwndbg_cyclicA | Generate or look up a cyclic (De Bruijn) pattern for offset calculation. pwndbg command: cyclic Source: pwndbg/commands/cyclic.py Category: Misc Generates patterns where every N-byte subsequence is unique, making it easy to determine crash offsets. Can also look up a value in the pattern to find the offset. Args: session_id: The UUID of the session. length: Length of pattern to generate (mutually exclusive with lookup). lookup: Value to look up in the pattern (finds offset). detect: If True, auto-detect the crash offset from registers. count: Pattern element count (default: 100). See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/cyclic/ |
| pwndbg_ropC | Find ROP gadgets using ROPgadget. pwndbg command: rop (alias: ropgadget) Source: pwndbg/commands/rop.py Category: Integrations Searches the loaded binary for useful ROP gadgets. Requires ROPgadget to be installed. Args: session_id: The UUID of the session. grep: Optional regex to filter gadgets. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/rop/ |
| pwndbg_onegadgetA | Find one-gadget (magic gadget) RCE gadgets in libc. pwndbg command: onegadget Source: pwndbg/commands/onegadget.py Category: Linux/libc/ELF Arch: x86-64, i386, aarch64 Searches for single-gadget code paths in libc that directly call execve("/bin/sh", ...). These are the holy grail for exploitation since overwriting a single function pointer gives a shell. Args: session_id: The UUID of the session. verbose: If True, show constraint details. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/onegadget/ |
| pwndbg_patchA | Patch an instruction at the given address with new code or bytes. pwndbg command: patch Source: pwndbg/commands/patch.py Category: Misc Assembles the given instruction and writes the bytes at the target address. Useful for live-patching binaries during analysis. Args: session_id: The UUID of the session. address: Address to patch. instruction: Assembly instruction or hex bytes to write. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/patch/ |
| pwndbg_patch_listB | List all applied patches. pwndbg command: patch-list Source: pwndbg/commands/patch.py Category: Misc Args: session_id: The UUID of the session. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/patch/ |
| pwndbg_patch_revertB | Revert a patch at the given address. pwndbg command: patch-revert Source: pwndbg/commands/patch.py Category: Misc Args: session_id: The UUID of the session. address: Address of the patch to revert. See: https://pwndbg.re/2025.05.30/reference/pwndbg/commands/patch/ |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Micro-Evaluation-Group/pwndbg-lldb-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server