This document describes the main UI, shortcuts, debugging features, trace features, script system, and plugin development APIs of the Z0BPcTools3 debugger.
Z0BPcTools3 is a Windows user-mode debugger with an MDI-style interface. After a debug session starts, you can open CPU, memory, stack, modules, threads, breakpoints, patches, call stack, handles, windows, SEH chain, references, source code, and other views from menus or shortcuts.
Common windows:
| English | Description |
|---|---|
| CPU Window | Shows disassembly, registers, data, and stack. This is the main debugging view. |
| Log Window | Shows debugger logs, plugin output, and script output. |
| Modules Window | Lists loaded EXE/DLL modules in the debuggee. |
| Memory Window | Shows memory regions and supports navigation, searching, and memory breakpoints. |
| Stack Window | Shows the current thread stack. |
| Threads Window | Lists and switches threads. |
| Breakpoints Window | Lists, deletes, and manages breakpoints. |
| Patches Window | Shows and manages patched code or data. |
| Call Stack Window | Shows the current thread call stack. |
| Trace Windows | Shows RUN trace, HIT trace, and related trace results. |
| Shortcut | English Function |
|---|---|
Alt+L |
Show Log window |
Alt+E |
Show Modules window |
Alt+C |
Show CPU window |
F9 |
Run or continue |
F12 |
Pause or suspend debuggee |
Ctrl+F2 |
Restart last debug command |
Alt+F2 |
Stop current debug session |
F7 |
Step into |
F8 |
Step over |
Ctrl+F7 |
Auto step into |
Ctrl+F8 |
Auto step over |
Ctrl+F9 |
Run until return |
Alt+F9 |
Run to user code |
Ctrl+F11 |
Trace into |
Ctrl+F12 |
Trace over |
Ctrl+T |
Set RUN trace condition |
Alt+F5 |
Toggle always on top |
- or numpad - |
Move CPU view back to the previous instruction position |
Alt+G |
Go to or follow expression in CPU view |
Enter |
Follow selected address or disassembly position in memory view |
F2 |
Set memory access breakpoint in memory view |
Ctrl+B |
Binary search in memory view |
Note: Some shortcuts work only when the related window is active.
| Menu | English Description |
|---|---|
| Open | Open and start debugging an executable file. |
| Attach | Attach to a running process. |
| Exit | Exit the debugger. |
The View menu opens debugger windows.
| Menu | English Description |
|---|---|
| Log | Open Log window. |
| Modules | Open Modules window. |
| Memory | Open Memory window. |
| Stack | Open Stack window. |
| Threads | Open Threads window. |
| Windows | Open Windows list. |
| Handles | Open Handles list. |
| CPU | Open CPU window. |
| SEH Chain | Open SEH chain window. |
| Patches | Open Patches window. |
| Call Stack | Open Call Stack window. |
| Breakpoints | Open Breakpoints window. |
| Watch | Open Watch window. |
| References | Open References window. |
| Source | Open Source window. |
| Source Files | Open Source Files window. |
| Menu | Shortcut | English Description |
|---|---|---|
| Run | F9 |
Run or continue the debuggee. |
| Pause | F12 |
Pause the current debuggee. |
| Restart | Ctrl+F2 |
Restart the last debug command. |
| Stop | Alt+F2 |
Stop the current debug session. |
| Step Into | F7 |
Execute one instruction and enter calls. |
| Step Over | F8 |
Execute one instruction and step over calls. |
| Run Until Return | Ctrl+F9 |
Run until the current function returns. |
| Run to User Code | Alt+F9 |
Run from system code to user code. |
| Hardware Breakpoint | Set or manage hardware breakpoints. | |
| Check | Open register or runtime check dialog. | |
| Call DLL Export Function | Call exported functions from a target DLL. | |
| Arguments | Configure command-line arguments. | |
| Select Import Library Directory | Select import library directory. | |
| Select Symbol Search Path | Select symbol search path. |
The Trace menu groups auto execution, RUN trace, HIT trace, and conditional trace features.
| Menu | Shortcut | English Description |
|---|---|---|
| Auto Step Into | Ctrl+F7 |
Repeatedly execute step-into operations. |
| Auto Step Over | Ctrl+F8 |
Repeatedly execute step-over operations. |
| RUN Trace | Record execution path or runtime instruction information. | |
| HIT Trace | Record hit code locations for coverage or path observation. | |
| Open or Clear RUN Trace | Open or clear RUN trace results. | |
| Trace Into | Ctrl+F11 |
Trace one step into. |
| Trace Over | Ctrl+F12 |
Trace one step over. |
| Set Condition | Ctrl+T |
Set RUN trace condition, count, or pause behavior. |
| Stop RUN Trace | Stop current RUN trace. |
The Script menu is used for ODbgScript, OllyPython, and OllyLua scripts. Script files are discovered from directories and converted into menu entries automatically.
| Script System | Directory | Description |
|---|---|---|
| ODbgScript | Determined by ODbgScript settings; usually managed via the script plugin | OllyDbg/ODbgScript-style scripts. |
| OllyPython | plugins\OllyPython\*.py |
Each .py file appears as Script -> OllyPython -> filename -> Run. |
| OllyLua | plugins\OllyLua\*.lua |
Each .lua file appears as Script -> OllyLua -> filename -> Run. |
| Menu | English Description |
|---|---|
| Find/Add Plugin | Select and load a plugin DLL from disk. |
| Plugin Name -> Plugin Menu Items | Each plugin is grouped by plugin name and exposes its own submenu. |
Plugins should be placed in the plugins directory or loaded from "Find/Add Plugin". Plugin bitness must match debugger bitness. For example, the x64 debugger requires x64 plugin DLLs.
| Menu | English Description |
|---|---|
| IDA Static Disassembly -> Memory Mode | Open IDA-style static disassembly using memory-oriented mode. Recommended for targets smaller than 50 MB. |
| IDA Static Disassembly -> Cache Mode | Open IDA-style static disassembly using cache mode. |
| Menu | English Description |
|---|---|
| Properties | Open the unified settings dialog. The left side is a fully expanded tree, and the right side shows the selected settings panel. |
| JIT Debug Options | Configure just-in-time debugging options. |
| Pause at Entry Point | Pause at program entry point after launch. |
| Run Immediately | Run immediately after launch. |
| Terminate Process on Close | Terminate debuggee when closing debug window. |
| Detach Process on Close | Detach from debuggee when closing debug window. |
| Function Signature Recognition | Enable or disable function signature recognition. |
| Add to Explorer Context Menu | Add debugger entry to Windows Explorer context menu. |
| Menu | Shortcut | English Description |
|---|---|---|
| Always on Top | Alt+F5 |
Toggle always-on-top for the main window. |
| Chinese | Switch UI language to Chinese. | |
| English | Switch UI language to English. | |
| Cascade | Cascade MDI child windows. | |
| Tile Horizontally | Tile MDI child windows horizontally. | |
| Tile Vertically | Tile MDI child windows vertically. |
| Menu | English Description |
|---|---|
| About | Show program version and copyright information. |
| Help Contents | Open help dialog with basic debugger usage, script guide, Python/Lua APIs, and plugin APIs. |
| Official Site | Open official site: http://www.nt5core.com. |
- Use
File -> Opento select an EXE. - Use
Debug -> Argumentsfirst if command-line arguments are needed. - Choose
Pause at entry pointorRun immediatelyin Options as needed. - After launch, use the CPU window to inspect entry point, registers, stack, and memory.
- Use
File -> Attachto open the process list. - Select the target process and confirm.
- After attaching, you can pause and inspect threads, modules, memory, and CPU state.
| Operation | English Description |
|---|---|
| Run | Continue until breakpoint, exception, pause, or process exit. |
| Pause | Interrupt a running debuggee and return control to the debugger. |
| Step Into | Single step and enter calls. |
| Step Over | Single step but skip call internals. |
| Run Until Return | Break when the current function returns. |
| Run to User Code | Skip system code and return to user module code. |
| Restart | Restart the last debug target. |
| Stop | Terminate or close current debug session. |
Z0BPcTools3 supports software breakpoints, memory breakpoints, and hardware breakpoints. Breakpoints can be controlled from CPU context menus, memory view, breakpoints window, script APIs, or plugin APIs.
| Type | English Description |
|---|---|
| Software Breakpoint | Breaks at target address using software breakpoint mechanisms. |
| Memory Breakpoint | Breaks on memory access or write. |
| Hardware Execute Breakpoint | Uses CPU debug registers to break on execution. |
| Hardware Access Breakpoint | Breaks on access to target address. |
| Hardware Write Breakpoint | Breaks on write to target address. |
Common operations:
| Operation | English Description |
|---|---|
| Set Breakpoint | Select an address in CPU or memory view and set breakpoint. |
| Delete Breakpoint | Delete from Breakpoints window or context menu. |
| Delete All Breakpoints | Delete all breakpoints from Breakpoints window, script API, or plugin API. |
| View Breakpoints | Open View -> Breakpoints. |
| Condition/Count | Trace conditions and some breakpoint logic can use expressions. |
The CPU window is the main debugging workspace and usually contains disassembly, registers, data, and stack panes.
Common operations:
| Operation | English Description |
|---|---|
| Assemble | Assemble instruction at selected address. |
| Go to/Follow | Go to or follow expression, address, call target, or data reference. |
| Binary Edit | Edit, fill zero, fill NOP, copy, or paste binary data. |
| Copy Text | Copy disassembly or data text. |
| Set Memory Breakpoint | Set access/write memory breakpoint or remove it. |
| Set Hardware Breakpoint | Set execute/access/write hardware breakpoints with length. |
| Display Mode | Switch 8/16/32-byte display and ANSI/Unicode/UTF-8 text display. |
| Step Back Display | Use - to move back to the previous instruction display position. |
The Memory window is used to inspect memory regions, follow addresses, search binary data, and set memory breakpoints.
| Shortcut | English Function |
|---|---|
Enter |
Follow selected address or disassembly position |
F2 |
Set memory access breakpoint |
Ctrl+B |
Binary search |
The Stack window shows the current thread stack and can be used with the CPU window to inspect return addresses, function arguments, and local data.
Trace features record execution paths, hit addresses, auto-step results, or condition-controlled execution results.
| Feature | English Description |
|---|---|
| Auto Step Into | Repeated step into, useful for observing instruction-by-instruction execution. |
| Auto Step Over | Repeated step over, useful for skipping function internals. |
| RUN Trace | Records execution path or instructions during run. |
| HIT Trace | Records hit code locations. |
| Trace Into | One traced step into. |
| Trace Over | One traced step over. |
| Trace Condition | Controls tracing with conditions, counts, or pause-on-command behavior. |
Recommended usage:
- Locate the code of interest in the CPU window.
- Use RUN trace when you need to record an execution path.
- Use HIT trace when you only need to know whether addresses were executed.
- Use
Ctrl+Tto set condition, count, or pause behavior when trace output is too large. - Stop tracing with
Stop RUN Tracewhen finished.
Z0BPcTools3 currently supports ODbgScript, OllyPython, and OllyLua. The Script menu organizes scripts by script type and filename.
ODbgScript uses OllyDbg script syntax and is suitable for automating breakpoints, execution, memory operations, assembling, searching, labels, and comments.
Common commands:
| Command | English Description |
|---|---|
bp addr |
Set software breakpoint. |
bphwc addr |
Set hardware execution breakpoint. |
bphws addr |
Set hardware write breakpoint. |
bpm addr |
Set memory breakpoint. |
bphwm addr |
Set hardware memory breakpoint. |
bc addr |
Clear breakpoint. |
run |
Run or continue. |
sti |
Step into. |
sto |
Step over. |
pause |
Pause. |
readstr |
Read string. |
writemem |
Write memory. |
asm |
Assemble instruction. |
exec ... ende |
Execute a multi-line assembly block. |
find |
Search in current area. |
findmem |
Search memory. |
gpa |
Get API address. |
lbl |
Set label. |
cmt |
Set comment. |
eval |
Evaluate expression. |
Full ODbgScript syntax can be found in odbgscript-master\doc\ODbgScript.txt.
OllyPython uses an embedded Python 3.x runtime and does not support Python 2.x. The runtime is loaded dynamically from DLLs to avoid increasing the main executable size through static linking.
Recommended directory layout:
plugins\
python313\
python313.dll
python313.zip
DLLs\
Lib\
OllyPython\
example.py
.py files are shown as:
Script -> OllyPython -> example -> Run
The Python module name is z0dbg.
Example:
import z0dbg
print(z0dbg.get_status())
data = z0dbg.read_memory(0x401000, 16)
print(data.hex())
z0dbg.set_breakpoint(0x401000)
z0dbg.step_over()Currently supported z0dbg APIs:
| API | English Description |
|---|---|
read_memory(address, size) |
Read debuggee memory. |
write_memory(address, data) |
Write debuggee memory. |
get_status() |
Get debugger status. |
get_cpu_thread_id() |
Get current CPU thread ID. |
set_breakpoint(address) |
Set software breakpoint. |
delete_breakpoint(address) |
Delete breakpoint at address. |
delete_breakpoints() |
Delete all software breakpoints. |
set_memory_breakpoint(address, size, type) |
Set memory breakpoint. |
remove_memory_breakpoint(address) |
Remove memory breakpoint. |
set_hardware_breakpoint(address, size, type) |
Set hardware breakpoint. |
delete_hardware_breakpoint(address) |
Delete hardware breakpoint. |
delete_hardware_breakpoint_index(index) |
Delete hardware breakpoint by slot index. |
run() |
Run or continue. |
go(address) |
Run to address. |
suspend() |
Suspend debuggee. |
step_into() |
Step into. |
step_over() |
Step over. |
auto_step_into() |
Auto step into. |
auto_step_over() |
Auto step over. |
stop_animation() |
Stop auto stepping or animation. |
set_temp_breakpoint(address) |
Set temporary breakpoint. |
find_name(name) |
Find symbol or name. |
insert_name(address, name) |
Insert name. |
decode_address(address) |
Decode address into module, symbol, or text. |
evaluate(expression) |
Evaluate expression. |
disasm(address) |
Disassemble address. |
assemble(address, text) |
Assemble instruction text. |
patch_assemble(address, text) |
Assemble and patch memory. |
find_data(address, data) |
Search binary data. |
follow_call(address) |
Follow call target. |
get_breakpoint_type(address) |
Get breakpoint type. |
get_next_breakpoint(address) |
Find next breakpoint. |
redraw_disasm() |
Redraw disassembly. |
redraw_registers() |
Redraw registers. |
redraw_list() |
Redraw list window. |
suspend_all_threads() |
Suspend all threads. |
show_memory() |
Show Memory window. |
show_breakpoints() |
Show Breakpoints window. |
show_threads() |
Show Threads window. |
show_trace() |
Show Trace window. |
show_windows() |
Show Windows list. |
show_patches() |
Show Patches window. |
set_trace_condition(expression) |
Set trace condition. |
set_trace_count(count) |
Set trace count. |
set_trace_pause_on_commands(enable) |
Set pause-on-command behavior for trace. |
is_prefix(address) |
Test whether instruction at address is a prefix. |
input_text(title, prompt) |
Show input dialog and return text. |
show_text(title, text) |
Show text dialog. |
API_VERSION |
Python API version constant. |
ADDRESS_BITS |
Current address bit width. |
ADDRESS_API_BITS |
Address API bit width. |
OllyLua dynamically loads the Lua DLL. The current DLL name is lua55.dll. It runs source .lua scripts directly and does not require users to precompile bytecode.
Lua DLL search locations:
plugins\lua55.dll
lua\lua55.dll
程序目录\lua55.dll
当前目录\lua55.dll
PATH 中的 lua55.dll
Recommended directory layout:
plugins\
lua55.dll
OllyLua\
example.lua
.lua files are shown as:
Script -> OllyLua -> example -> Run
Lua scripts access debugger features through the z0dbg table.
Common APIs:
| API | English Description |
|---|---|
z0dbg.read_memory(address, size) |
Read debuggee memory. |
z0dbg.write_memory(address, data) |
Write debuggee memory. |
z0dbg.get_status() |
Get debugger status. |
z0dbg.get_cpu_thread_id() |
Get current CPU thread ID. |
z0dbg.set_breakpoint(address) |
Set software breakpoint. |
z0dbg.delete_breakpoint(address) |
Delete breakpoint at address. |
z0dbg.delete_breakpoints() |
Delete all software breakpoints. |
z0dbg.set_memory_breakpoint(address, size, type) |
Set memory breakpoint. |
z0dbg.set_hardware_breakpoint(address, size, type) |
Set hardware breakpoint. |
z0dbg.run() |
Run or continue. |
z0dbg.go(address) |
Run to address. |
z0dbg.suspend() |
Suspend debuggee. |
z0dbg.step_into() |
Step into. |
z0dbg.step_over() |
Step over. |
z0dbg.find_name(name) |
Find name. |
z0dbg.insert_name(address, name) |
Insert name. |
z0dbg.decode_address(address) |
Decode address. |
z0dbg.input_text(title, prompt) |
Show input dialog. |
z0dbg.show_text(title, text) |
Show text dialog. |
Z0BPcTools3 supports OllyDbg 2.0-style plugin interfaces and provides SDK headers and import libraries for this debugger.
SDK locations:
sdk\include\plugin.h
sdk\lib\x64\Release\Z0BPcTools3.lib
sdk\lib\Win32\Release\Z0BPcTools3.lib
Plugin DLLs must export required ODBG2 plugin functions. Common exports:
| Export | English Description |
|---|---|
ODBG2_Pluginquery |
Query plugin name, version, and compatibility. |
ODBG2_Plugininit |
Initialize plugin. |
ODBG2_Pluginmenu |
Return plugin menu structure. |
ODBG2_Pluginaction |
Handle plugin menu actions. |
ODBG2_Pluginmainloop |
Receive debugger main loop events. |
ODBG2_Pluginsaveudd |
Save user database data. |
ODBG2_Pluginuddrecord |
Load user database records. |
ODBG2_Pluginclose |
Debug session close notification. |
ODBG2_Plugindestroy |
Plugin unload cleanup. |
Common debugger APIs:
| API | English Description |
|---|---|
Readmemory |
Read debuggee memory. |
Writememory |
Write debuggee memory. |
Getstatus |
Get debugger status. |
Getcputhreadid |
Get current CPU thread ID. |
Setbreakpoint |
Set breakpoint. |
Deletebreakpoints |
Delete breakpoints. |
Setmembreakpoint |
Set memory breakpoint. |
Sethardwarebreakpoint |
Set hardware breakpoint. |
Findname |
Find name. |
Insertname |
Insert name. |
Decodeaddress |
Decode address. |
Expression |
Evaluate expression. |
Disasm |
Disassemble. |
Assemble |
Assemble. |
Finddata |
Find binary data. |
Followcall |
Follow call. |
Isprefix |
Test instruction prefix. |
Addtolist |
Add log entry to list. |
Redrawdisassembler |
Redraw disassembler. |
Createthreadwindow |
Create or open thread window. |
Settracecondition |
Set trace condition. |
Settracecount |
Set trace count. |
Settracepauseoncommands |
Set trace pause-on-command behavior. |
Redrawcpudisasm |
Redraw CPU disassembly pane. |
Redrawcpureg |
Redraw CPU register pane. |
Redrawlist |
Redraw list. |
Setcpu |
Set CPU window position. |
Setdisasm |
Set disassembly position. |
SDK helper functions:
| API | English Description |
|---|---|
Z0B_InitSorted |
Initialize sorted table structure. |
Z0B_InitTable |
Initialize table structure. |
Z0B_InitTableColumn |
Initialize table column. |
Z0B_CreateTableWindow |
Create table window. |
Plugin menu display rule:
Plugin -> PluginName -> Plugin-defined menu items
Notes:
| Issue | English Description |
|---|---|
| Bitness Mismatch | x64 debugger loads only x64 plugins, and Win32 debugger loads only Win32 plugins. |
| Version Check Failed | Plugin must return a compatible ODBG2 version. |
| Missing Exports | Plugin DLL must export required entry points. |
| Duplicate Load | The same path or same plugin name should not be loaded repeatedly. |
MCP Tools is an ODBG2-style plugin that adds MCP Server configuration entries to the Plugin menu.
Menu location:
插件 -> MCP Tools -> 设置 MCP Server
插件 -> MCP Tools -> 重新读取配置
插件 -> MCP Tools -> 显示配置文件路径
插件 -> MCP Tools -> 发送测试事件
插件 -> MCP Tools -> 关于
Plugin -> MCP Tools -> Configure MCP Server
Plugin -> MCP Tools -> Reload configuration
Plugin -> MCP Tools -> Show configuration file path
Plugin -> MCP Tools -> Send test event
Plugin -> MCP Tools -> About
Plugin output locations:
x64\Release\plugins\McpTools.dll
Release\plugins\McpTools.dll
Configuration file location:
<debugger directory>\plugins\McpTools.ini
Configuration fields:
| Field | English Description |
|---|---|
enabled |
Whether the MCP Server configuration is enabled. |
name |
Server name. |
transport |
Transport type: stdio, http, or sse. |
url |
Server URL for http or sse mode. |
command |
Command used to start MCP Server in stdio mode. |
arguments |
Startup arguments for stdio mode. |
workdir |
Working directory for stdio mode. |
env |
Environment variables, one NAME=VALUE per line. |
timeout_ms |
Connection or request timeout in milliseconds. |
The MCP Tools plugin UI follows the current main-menu language selection, "Chinese / English", and does not use a separate language setting.
Event transport:
| Transport | English Description |
|---|---|
stdio |
The plugin starts the configured MCP Server process and writes one JSON event per line to server stdin. |
http |
The plugin sends HTTP POST requests to the configured URL with JSON request bodies. |
sse |
Currently sends events as HTTP POST. It can be extended to a real SSE session later. |
Events are sent by a worker thread. Debugger callback threads only enqueue events. The queue limit is 512 items; when full, the oldest item is dropped to avoid blocking the debugger.
Basic event JSON format:
{
"jsonrpc": "2.0",
"method": "z0dbg/event",
"params": {
"source": "Z0BPcTools3",
"plugin": "MCP Tools",
"event": "debug_event",
"tick": 12345678
}
}Supported events:
| Event | English Description |
|---|---|
plugin_init |
Plugin initialized. |
plugin_destroy |
Plugin destroyed. |
config_reloaded |
Configuration reloaded. |
test |
Test event triggered from menu. |
debug_event |
Windows debug event from ODBG2_Pluginmainloop(DEBUG_EVENT*). |
notify |
Debugger notification event from ODBG2_Pluginnotify(). |
debug_event includes:
| Field | English Description |
|---|---|
debugEventCode |
Windows debug event code. |
debugEventName |
Event name such as exception, create_process, or load_dll. |
processId |
Process ID. |
threadId |
Thread ID. |
exceptionCode |
Exception code, only for exception events. |
exceptionAddress |
Exception address, only for exception events. |
firstChance |
Whether this is a first-chance exception. |
imageBase、dllBase |
Process image base or DLL base. |
startAddress |
New process or thread start address. |
exitCode |
Process or thread exit code. |
notify includes:
| Field | English Description |
|---|---|
notifyCode |
Notification code. |
notifyName |
Notification name such as new_process, new_module, or end_process. |
dataPointer |
Raw data pointer address for advanced server-side handling. |
parm1、parm2 |
Notification parameters, usually address or range values. |
Current MCP control tools:
| Category | Tools |
|---|---|
| Status | get_status, get_cpu_thread_id |
| Execution control | run, go, pause, step_into, step_over, trace_into, trace_over, auto_step_into, auto_step_over |
| Memory | read_memory, write_memory, list_memory, find_memory, find_data_ptr |
| Software breakpoints | set_software_breakpoint, set_software_breakpoint_ext, delete_software_breakpoint, delete_breakpoint_range, delete_all_breakpoints |
| Memory breakpoints | set_memory_breakpoint, delete_memory_breakpoint |
| Hardware breakpoints | set_hardware_breakpoint, delete_hardware_breakpoint, get_breakpoint_type, get_breakpoint_type_count, get_next_breakpoint, set_temp_breakpoint, plugin_temp_breakpoint |
| Disassembly and assembly | disassemble, assemble |
| CPU window | set_cpu, set_disasm |
| Expressions, symbols, modules, and threads | evaluate, find_name, insert_name, decode_address, decode_name, comment_address, simple_address, find_label, find_module, find_thread, find_data, find_decode, find_strings, find_references, find_import_by_name, find_file_offset, follow_call, walk_reference, walk_reference_ex, is_prefix |
| CPU context | get_last_error, get_cpu_disasm_dump, get_cpu_disasm_table |
| Plugin INI | plugin_read_ini_int, plugin_write_ini_int, plugin_read_ini_string, plugin_write_ini_string |
| Refresh and thread control | redraw_disasm, redraw_registers, redraw_list, redraw_all, suspend_all_threads, resume_all_threads |
| Windows | show_memory, show_breakpoints, show_hardware_breakpoints, show_threads, show_trace, show_windows, show_patches, show_watch |
| Trace settings | set_trace_condition, set_trace_count, set_trace_pause_on_commands |
| Dump and plugin notification helpers | set_dump_type, dump_backup, plugin_module_changed |
Total: 81 control tools. Address parameters support 64-bit addresses; "0x..." JSON strings are recommended. In x64 builds, disassembly and assembly use the debugger's x64 instruction decoding/assembling path. In x64 mode, host APIs returning pointers through int are not exposed as control tools to avoid truncating 64-bit values.
Register write, thread enumeration/per-thread suspend/resume, module enumeration, detailed patch management, and more APIs can be added later to approach xdbg64 MCP's 79-tool scale.
When using stdio, the MCP Server sends one JSON-RPC request per line to stdout, and the plugin writes one JSON-RPC response per line back to server stdin.
Tool list request:
{"jsonrpc":"2.0","id":1,"method":"z0dbg.tools"}Tool call request:
{"jsonrpc":"2.0","id":2,"method":"z0dbg.call","params":{"tool":"read_memory","address":"0x401000","size":16}}The tool name can also be placed directly after method:
{"jsonrpc":"2.0","id":3,"method":"z0dbg.step_over"}The current version supports MCP Server configuration, test events, structured debug event forwarding, notification forwarding, and the first 81 debugger control tools.
- Open CPU or Memory window.
- Use Go to or Follow to locate the address.
- Inspect bytes, strings, or data in Memory window.
- For automation, use Python
z0dbg.read_memory(address, size)or Luaz0dbg.read_memory(address, size).
- Select an address in CPU disassembly pane.
- Use Assemble from the context menu.
- Enter the new instruction and confirm.
- Check changes in the Patches window.
- Select the target address in CPU or Memory view.
- Choose hardware breakpoint type: execute, access, or write.
- Select breakpoint length according to data size.
- Run the program. The debugger breaks when the breakpoint is hit.
- Place Python scripts in
plugins\OllyPython. - Place Lua scripts in
plugins\OllyLua. - Select the script name from the Script menu and click Run.
- ODbgScript scripts run through the ODbgScript plugin window and configured script directory.
| Symptom | English Fix |
|---|---|
| Plugin menu not shown | Check DLL location, bitness, and required ODBG2 exports. |
| Version check failed prompt | Rebuild plugin and ensure ODBG2_Pluginquery returns a compatible version. |
| Python script cannot run | Check python313.dll, stdlib zip, or Lib/DLLs under plugins\python313. |
| z0dbg module install failed | Check Python initialization, plugin directory completeness, and runtime bitness. |
| Lua DLL not found | Put lua55.dll in plugins\lua55.dll or another search path. |
| Lua stdlib is nil | Ensure standard libraries are opened and the correct DLL is loaded. |
| Invalid address read | Ensure the address belongs to the debuggee and the memory page is readable. |
| Wrong close behavior | Check Terminate or Detach options on close. |
Official site:
http://www.nt5core.com
This document is based on the current project menus, shortcuts, script help, and SDK APIs. When new menus, shortcuts, script APIs, or plugin APIs are added, update this document and the built-in Help -> Help Contents dialog together.