x64dbg is an open-source binary debugger for Windows, specifically designed for malware analysis and reverse engineering of executables where source code is unavailable README.md1-9 It provides a comprehensive feature set including a robust plugin system, a custom expression engine, and advanced visualization tools like control-flow graphs README.md9-17
x64dbg employs a three-layer architecture designed to separate the low-level debugging logic from the high-level graphical interface. This separation ensures stability and allows for alternative front-ends, such as the headless mode used for automated scripts src/bridge/bridgemain.h70-72
The following diagram illustrates how the major subsystems interact through defined boundaries, specifically focusing on the communication between the GUI and the Engine via the Bridge.
Architecture Component Map
Sources: src/bridge/bridgemain.h57-67 src/gui/Src/Gui/MainWindow.cpp89-110 src/dbg/debugger.cpp102-104 src/bridge/bridgemain.cpp15-34
MainWindow src/gui/Src/Gui/MainWindow.cpp62-66 It handles all user interaction and rendering of views like disassembly, memory maps, and registers. It connects to the engine via the Bridge singleton src/gui/Src/Bridge/Bridge.cpp200-212BridgeSettingGet/Set src/bridge/bridgemain.h94-121 It also handles the translation of internal engine states to GUI messages (GUIMSG) src/gui/Src/Bridge/Bridge.cpp32-73src/dbg directory. It manages the debug loop thread src/dbg/debugger.cpp104 command registration src/dbg/x64dbg.cpp105-107 and global state tracking like bIsDebugging src/dbg/debugger.cpp106For a deeper dive into these layers, see Architecture Overview: Bridge, DBG, and GUI.
To assist developers in navigating the codebase, the following diagram maps conceptual debugger features to their primary implementation files and classes.
Feature to Code Entity Mapping
Sources: src/dbg/debugger.cpp7-21 src/gui/Src/Gui/MainWindow.cpp21-32 src/dbg/x64dbg.cpp7-22 src/dbg/_exports.cpp46-60
x64dbg supports both 32-bit (x32) and 64-bit (x64) architectures. The build system ensures that the correct libraries are loaded based on the target architecture src/bridge/bridgemain.cpp28-34
x96dbg.exe to select the architecture or register shell extensions README.md20-25BridgeInit function handles the initial setup of user directories and configuration loading src/bridge/bridgemain.cpp167-184dbgcreatedebugthread src/dbg/debugger.cpp176-177 and entering a command loop managed by hCommandLoopThread src/dbg/x64dbg.cpp38-39For details, see Getting Started: Installation and Building.
| Component | Responsibility | Primary Technologies |
|---|---|---|
| GUI | Visualization and User Input | Qt5, MainWindow, Bridge signals |
| DBG | Debugging Logic, Command Execution | C++, TitanEngine, Zydis |
| Bridge | Cross-DLL Communication | C-API, GUIMSG messaging, Utf8Ini |
| Plugins | Extensibility | C-API Callbacks, plugin_loader |
| Launcher | Architecture selection | x64dbg_launcher.cpp |
Sources: README.md50-58 src/bridge/bridgemain.cpp11-15 src/dbg/plugin_loader.h1-15 src/launcher/x64dbg_launcher.cpp1-10
x64dbg includes a translation system and accessibility wrappers to ensure the tool is usable by a wide range of developers.
chooseLanguage slot src/gui/Src/Gui/MainWindow.h150 and handled through the Crowdin platform README.md5Sources: src/gui/Src/Gui/MainWindow.h150 src/gui/Src/Gui/MainWindow.cpp90-110 README.md5