x64dbg Reverse Engineering Skill
Expert knowledge base for reverse engineering with x64dbg debugger through MCP protocol.
When to Use
Activate this skill when:
- Analyzing binary executables on Windows
- Debugging applications with x64dbg/x32dbg
- Unpacking protected binaries
- Hunting for vulnerabilities
- Reverse engineering algorithms or protocols
- Monitoring API calls and system behavior
- Patching binary code
Available MCP Tools (79 total)
Debug Control (10 tools)
debug_get_state - Check debugger state (paused/running/stopped)
debug_init - Start a new debug session by loading an executable (params: path?, arguments?, current_dir?)
debug_run - Continue execution
debug_pause - Break execution
debug_step_into - Single step into calls
debug_step_over - Single step over calls
debug_step_out - Execute until function returns
debug_run_to - Run to specific address (param: address)
debug_restart - Restart the debug session
debug_stop - Stop debugging
Registers (4 tools)
register_get - Read one register (param: name)
register_set - Write register (params: name, value)
register_list - List all registers (optional: general_only)
register_get_batch - Read multiple registers (param: names array)
Memory (7 tools)
memory_read - Read memory (params: address, size; optional: encoding)
memory_write - Write memory (params: address, data; optional: encoding)
memory_search - Search pattern (param: pattern; optional: start, end, max_results)
memory_get_info - Region info (param: address)
memory_enumerate - List all regions
memory_allocate - Allocate memory (param: size)
memory_free - Free memory (param: address)
Breakpoints (11 tools)
breakpoint_set - Set breakpoint (param: address; optional: type, enabled)
breakpoint_delete - Remove breakpoint (param: address)
breakpoint_enable / breakpoint_disable / breakpoint_toggle
breakpoint_list - List all breakpoints
breakpoint_get - Get details (param: address)
breakpoint_delete_all - Remove all
breakpoint_set_condition - Set condition (params: address, condition)
breakpoint_set_log - Set log message (params: address, log_text)
breakpoint_reset_hitcount - Reset counter (param: address)
Disassembly (3 tools)
disassembly_at - Disassemble at address (params: address, count)
disassembly_function - Disassemble entire function (param: address)
disassembly_range - Disassemble range (params: start, end)
Symbols (7 tools)
symbol_resolve - Name to address (param: symbol)
symbol_from_address - Address to name (param: address)
symbol_search - Search symbols (param: pattern)
symbol_list - List symbols (optional: module)
symbol_set_label - Set label (params: address, label)
symbol_set_comment / symbol_get_comment
Modules (5 tools)
module_list - All loaded modules
module_get - Module info (param: module)
module_get_main - Main executable module
module_get_exports - List module exports (param: module)
module_get_imports - List module imports (param: module)
Threads (7 tools)
thread_list - All threads
thread_get_current - Current thread
thread_switch - Switch thread (param: thread_id)
thread_get - Thread info (param: thread_id)
thread_suspend / thread_resume / thread_get_count
Stack (4 tools)
stack_get_trace - Call stack trace
stack_read_frame - Read stack frame (params: address, size)
stack_get_pointers - RSP/RBP values
stack_is_on_stack - Check address (param: address)
Dump (5 tools)
dump_module - Dump module to file with PE rebuild and optional OEP override
dump_memory_region - Dump raw memory region
dump_analyze_module - PE analysis with entropy and packer detection
dump_detect_oep - Detect Original Entry Point via pattern analysis
dump_get_dumpable_regions - List dumpable regions
Script (3 tools)
script_execute - Run x64dbg command (param: command)
script_execute_batch - Run batch commands (param: commands array)
script_get_last_result - Get last result
Context Snapshots (3 tools)
context_get_snapshot - Full state capture
context_get_basic - Quick register + state check
context_compare_snapshots - Diff two snapshots
Expression Evaluation (1 tool)
eval_expression - Evaluate x64dbg expression (param: expression) — supports math, symbols, registers, memory dereferences like [rsp+8]
Cross-References (1 tool)
xref_get - Get cross-references to an address (param: address)
Function Analysis (2 tools)
function_list - List all recognized functions (optional: module filter)
function_get - Get function boundaries at address (param: address)
Assembler (1 tool)
assembler_assemble - Assemble instruction to bytes (params: instruction, address; optional: write_to_memory)
Bookmarks (3 tools)
bookmark_set - Set bookmark (param: address)
bookmark_delete - Delete bookmark (param: address)
bookmark_list - List all bookmarks
Patch Management (2 tools)
patch_list - List all applied byte-level patches
patch_restore - Restore original bytes at address (param: address)
x64dbg Log Format Syntax
When using breakpoint_set_log, format strings use these placeholders:
{REG} - Register value in hex (e.g., {RAX}, {RCX})
{REG:x} - Explicit hex format
{[ADDR]} - Dereference pointer at address
{[ADDR]:us} - Read as Unicode string
{[ADDR]:as} - Read as ASCII string
{[REG+OFFSET]} - Register + offset dereference
x64 fastcall parameter logging
"FuncName: p1={RCX} p2={RDX} p3={R8} p4={R9} ret={[RSP]:x}"
x86 stdcall parameter logging
"FuncName: p1={[ESP+4]:x} p2={[ESP+8]:x} p3={[ESP+C]:x}"
Common Reverse Engineering Patterns
Identifying Calling Conventions
- x64 fastcall (Windows): RCX, RDX, R8, R9, then stack. Return in RAX.
- x86 cdecl: All params on stack, caller cleans. Return in EAX.
- x86 stdcall (WinAPI): All params on stack, callee cleans. Return in EAX.
- x86 thiscall (C++): ECX = this pointer, rest on stack.
Recognizing Crypto Constants
| Constant |
Algorithm |
| 0x67452301, 0xEFCDAB89 |
MD5 / SHA-1 init |
| 0x6A09E667, 0xBB67AE85 |
SHA-256 init |
| 0x61707865 ("expa") |
ChaCha20 / Salsa20 |
| 0xEDB88320 |
CRC32 (reflected) |
| 0x04C11DB7 |
CRC32 (normal) |
| 0x9E3779B9 |
TEA / XTEA golden ratio |
Windows Debug Heap Fill Patterns
| Pattern |
Meaning |
| 0xCCCCCCCC |
Uninitialized stack (MSVC debug) |
| 0xCDCDCDCD |
Uninitialized heap (MSVC debug) |
| 0xDDDDDDDD |
Freed heap memory |
| 0xFEEEFEEE |
Freed heap (Windows debug heap) |
| 0xFDFDFDFD |
Heap guard bytes (buffer boundaries) |
| 0xBAADF00D |
LocalAlloc uninitialized |
| 0xDEADBEEF |
Common debug marker |
Anti-Debug Detection Points
kernel32.IsDebuggerPresent - Check PEB.BeingDebugged
ntdll.NtQueryInformationProcess - ProcessDebugPort (0x7)
kernel32.CheckRemoteDebuggerPresent
- PEB.NtGlobalFlag (0x70 = debugger attached)
- Timing checks:
rdtsc, QueryPerformanceCounter, GetTickCount
Source: SetsunaYukiOvO/x64dbg-mcp — distributed by TomeVault.
1---2name: x64dbg-reverse-engineering3description: This skill should be used when performing binary analysis, debugging, reverse engineering, unpacking, or vulnerability research with x64dbg debugger via MCP. Provides expert knowledge on x64dbg MCP tools, Windows internals, assembly patterns, and reverse engineering methodology. Use when this capability is needed.4---56# x64dbg Reverse Engineering Skill78Expert knowledge base for reverse engineering with x64dbg debugger through MCP protocol.910## When to Use1112Activate this skill when:13- Analyzing binary executables on Windows14- Debugging applications with x64dbg/x32dbg15- Unpacking protected binaries16- Hunting for vulnerabilities17- Reverse engineering algorithms or protocols18- Monitoring API calls and system behavior19- Patching binary code2021## Available MCP Tools (79 total)2223### Debug Control (10 tools)24- `debug_get_state` - Check debugger state (paused/running/stopped)25- `debug_init` - Start a new debug session by loading an executable (params: `path?`, `arguments?`, `current_dir?`)26- `debug_run` - Continue execution27- `debug_pause` - Break execution28- `debug_step_into` - Single step into calls29- `debug_step_over` - Single step over calls30- `debug_step_out` - Execute until function returns31- `debug_run_to` - Run to specific address (param: `address`)32- `debug_restart` - Restart the debug session33- `debug_stop` - Stop debugging3435### Registers (4 tools)36- `register_get` - Read one register (param: `name`)37- `register_set` - Write register (params: `name`, `value`)38- `register_list` - List all registers (optional: `general_only`)39- `register_get_batch` - Read multiple registers (param: `names` array)4041### Memory (7 tools)42- `memory_read` - Read memory (params: `address`, `size`; optional: `encoding`)43- `memory_write` - Write memory (params: `address`, `data`; optional: `encoding`)44- `memory_search` - Search pattern (param: `pattern`; optional: `start`, `end`, `max_results`)45- `memory_get_info` - Region info (param: `address`)46- `memory_enumerate` - List all regions47- `memory_allocate` - Allocate memory (param: `size`)48- `memory_free` - Free memory (param: `address`)4950### Breakpoints (11 tools)51- `breakpoint_set` - Set breakpoint (param: `address`; optional: `type`, `enabled`)52- `breakpoint_delete` - Remove breakpoint (param: `address`)53- `breakpoint_enable` / `breakpoint_disable` / `breakpoint_toggle`54- `breakpoint_list` - List all breakpoints55- `breakpoint_get` - Get details (param: `address`)56- `breakpoint_delete_all` - Remove all57- `breakpoint_set_condition` - Set condition (params: `address`, `condition`)58- `breakpoint_set_log` - Set log message (params: `address`, `log_text`)59- `breakpoint_reset_hitcount` - Reset counter (param: `address`)6061### Disassembly (3 tools)62- `disassembly_at` - Disassemble at address (params: `address`, `count`)63- `disassembly_function` - Disassemble entire function (param: `address`)64- `disassembly_range` - Disassemble range (params: `start`, `end`)6566### Symbols (7 tools)67- `symbol_resolve` - Name to address (param: `symbol`)68- `symbol_from_address` - Address to name (param: `address`)69- `symbol_search` - Search symbols (param: `pattern`)70- `symbol_list` - List symbols (optional: `module`)71- `symbol_set_label` - Set label (params: `address`, `label`)72- `symbol_set_comment` / `symbol_get_comment`7374### Modules (5 tools)75- `module_list` - All loaded modules76- `module_get` - Module info (param: `module`)77- `module_get_main` - Main executable module78- `module_get_exports` - List module exports (param: `module`)79- `module_get_imports` - List module imports (param: `module`)8081### Threads (7 tools)82- `thread_list` - All threads83- `thread_get_current` - Current thread84- `thread_switch` - Switch thread (param: `thread_id`)85- `thread_get` - Thread info (param: `thread_id`)86- `thread_suspend` / `thread_resume` / `thread_get_count`8788### Stack (4 tools)89- `stack_get_trace` - Call stack trace90- `stack_read_frame` - Read stack frame (params: `address`, `size`)91- `stack_get_pointers` - RSP/RBP values92- `stack_is_on_stack` - Check address (param: `address`)9394### Dump (5 tools)95- `dump_module` - Dump module to file with PE rebuild and optional OEP override96- `dump_memory_region` - Dump raw memory region97- `dump_analyze_module` - PE analysis with entropy and packer detection98- `dump_detect_oep` - Detect Original Entry Point via pattern analysis99- `dump_get_dumpable_regions` - List dumpable regions100101### Script (3 tools)102- `script_execute` - Run x64dbg command (param: `command`)103- `script_execute_batch` - Run batch commands (param: `commands` array)104- `script_get_last_result` - Get last result105106### Context Snapshots (3 tools)107- `context_get_snapshot` - Full state capture108- `context_get_basic` - Quick register + state check109- `context_compare_snapshots` - Diff two snapshots110111### Expression Evaluation (1 tool)112- `eval_expression` - Evaluate x64dbg expression (param: `expression`) — supports math, symbols, registers, memory dereferences like `[rsp+8]`113114### Cross-References (1 tool)115- `xref_get` - Get cross-references to an address (param: `address`)116117### Function Analysis (2 tools)118- `function_list` - List all recognized functions (optional: `module` filter)119- `function_get` - Get function boundaries at address (param: `address`)120121### Assembler (1 tool)122- `assembler_assemble` - Assemble instruction to bytes (params: `instruction`, `address`; optional: `write_to_memory`)123124### Bookmarks (3 tools)125- `bookmark_set` - Set bookmark (param: `address`)126- `bookmark_delete` - Delete bookmark (param: `address`)127- `bookmark_list` - List all bookmarks128129### Patch Management (2 tools)130- `patch_list` - List all applied byte-level patches131- `patch_restore` - Restore original bytes at address (param: `address`)132133## x64dbg Log Format Syntax134135When using `breakpoint_set_log`, format strings use these placeholders:136- `{REG}` - Register value in hex (e.g., `{RAX}`, `{RCX}`)137- `{REG:x}` - Explicit hex format138- `{[ADDR]}` - Dereference pointer at address139- `{[ADDR]:us}` - Read as Unicode string140- `{[ADDR]:as}` - Read as ASCII string141- `{[REG+OFFSET]}` - Register + offset dereference142143### x64 fastcall parameter logging144```145"FuncName: p1={RCX} p2={RDX} p3={R8} p4={R9} ret={[RSP]:x}"146```147148### x86 stdcall parameter logging149```150"FuncName: p1={[ESP+4]:x} p2={[ESP+8]:x} p3={[ESP+C]:x}"151```152153## Common Reverse Engineering Patterns154155### Identifying Calling Conventions156- **x64 fastcall** (Windows): RCX, RDX, R8, R9, then stack. Return in RAX.157- **x86 cdecl**: All params on stack, caller cleans. Return in EAX.158- **x86 stdcall** (WinAPI): All params on stack, callee cleans. Return in EAX.159- **x86 thiscall** (C++): ECX = this pointer, rest on stack.160161### Recognizing Crypto Constants162| Constant | Algorithm |163|----------|-----------|164| 0x67452301, 0xEFCDAB89 | MD5 / SHA-1 init |165| 0x6A09E667, 0xBB67AE85 | SHA-256 init |166| 0x61707865 ("expa") | ChaCha20 / Salsa20 |167| 0xEDB88320 | CRC32 (reflected) |168| 0x04C11DB7 | CRC32 (normal) |169| 0x9E3779B9 | TEA / XTEA golden ratio |170171### Windows Debug Heap Fill Patterns172| Pattern | Meaning |173|---------|---------|174| 0xCCCCCCCC | Uninitialized stack (MSVC debug) |175| 0xCDCDCDCD | Uninitialized heap (MSVC debug) |176| 0xDDDDDDDD | Freed heap memory |177| 0xFEEEFEEE | Freed heap (Windows debug heap) |178| 0xFDFDFDFD | Heap guard bytes (buffer boundaries) |179| 0xBAADF00D | LocalAlloc uninitialized |180| 0xDEADBEEF | Common debug marker |181182### Anti-Debug Detection Points183- `kernel32.IsDebuggerPresent` - Check PEB.BeingDebugged184- `ntdll.NtQueryInformationProcess` - ProcessDebugPort (0x7)185- `kernel32.CheckRemoteDebuggerPresent`186- PEB.NtGlobalFlag (0x70 = debugger attached)187- Timing checks: `rdtsc`, `QueryPerformanceCounter`, `GetTickCount`188189---190> Source: [SetsunaYukiOvO/x64dbg-mcp](https://github.com/SetsunaYukiOvO/x64dbg-mcp) — distributed by [TomeVault](https://tomevault.io).191<!-- tomevault:4.0:skill_md:2026-06-18 -->