Skip to content

Releases: x64dbg/x64dbg

2026.04.20

20 Apr 19:59

Choose a tag to compare

April 2026: Bug fixes, workflow polish, and initial accessibility support

This release focuses mostly on bug fixes, workflow polish, and groundwork for future stability. The most visible addition is initial accessibility support across several core views, alongside a number of smaller improvements that should make day-to-day debugging smoother.

🤖 Automation

❗ If you are experimenting with agent-assisted reverse engineering, you might want to check out x64dbg-skills by @darbonzo. It is built on top of x64dbg Automate MCP, and the accompanying cookbook post walks through practical reverse engineering workflows.

This is not part of x64dbg itself, but it is a nice example of the kind of tooling that is starting to form around automation and scripting. The headless executable has been fleshed out a bit more as well, mostly to support testing.

✨ Everyday improvements

A lot of the work in this release shows up as small improvements in places you use all the time.

Pattern finding got a usability/performance pass, making it easier to work with. Breakpoint expressions now validate directly in the dialog with clear red and green feedback, which should make it much easier to catch mistakes before saving a condition. You can also edit the raw bytes of a register directly, save graph images as PDF, and highlight the call stack by module or symbol.

There are also a number of smaller quality-of-life improvements: bulk toggling software breakpoints on selected instructions, cycling hotkeys for dump view modes, copy shortcuts in more places, faster filtering in search lists, and clearer naming around trace coverage options.

This release also fixes several frustrating issues that could get in the way of normal debugging work, including crashes with files larger than 2GB, loading DLLs without an entrypoint, loading modules when the file path is stale or the file is locked, and a fatal GUI exception when pressing Ctrl+A in search boxes.

♿ Accessibility support

This release introduces the first accessibility support in x64dbg. Registers, Disassembly, Hex Dump, Trace Browser and most table-based views now expose accessibility information that can be used by screen readers and other assistive or UI automation tools.

There are also a number of supporting fixes in this area, including additional accessibility names, improved table behavior, and follow-up fixes for the new registers view. This is still only a first step, but it lays the groundwork for using x64dbg in environments where accessibility APIs matter.

🧪 Reliability and testing

Much of the less visible work in this release went into reducing regressions.

A new test framework has been added and memory breakpoint coverage was expanded significantly. There were also many fixes around testing lifecycle issues, headless behavior, tracing, and scripting edge cases. This kind of work is not flashy, but it should help catch problems earlier and make snapshots more trustworthy over time.

A few other fixes in this area are worth calling out too: tracing performance was improved, trace parsing became more robust, patch import undo was fixed, and several issues around command line handling, elevation, and general UI behavior were cleaned up.

🐧 A small Linux experiment

Thanks entirely to @3rdit, the first pre-alpha pieces of a Linux debugger based on the new ElfBug engine have been merged, together with an AppImage build for the cross/debugger project.

The point of this work is not to ship a polished Linux port. Instead it gives us a proving ground for the cross-platform widget library that is slowly taking shape, and @3rdit is also the one maintaining this effort going forward. Below is a screenshot of x64dbg running on the Steam Deck:

🤝 Community

x64dbg is a community-driven project, and this release would not have been possible without the incredible work of our contributors. A huge thank you to everyone who contributed code, reported bugs, and helped shape this release ❤️

We recently revamped the Discord community, which you can join below:

Other platforms are synchronized with the #general channel:

Slack Gitter Matrix IRC

❤️ Sponsors

This project is also made possible by the generous support of sponsors. Active sponsors: @xxr0ss, @Vlavv, @lupier, @tobiaskocur, @PhilipPanda, @junquera, @sanglantes, @BeAllAround, @pawlos, @cyb3rjerry, @matthias-hoffrichter, @sanglantes, @BeAllAround, @pawlos, @grant-h, @MorpheusH3x, @re-jevi, @verdeckt, @daaximus, @stevemk14ebr, @as0ni, @sedrakpc, @Invoke-RE, @shu-tom, @buzzer-re, @expend20, @crudd, @clayne, @fr0zenbag, @dzzie

📜 Changelog

  • Update API documentation
  • Always display most recent release notes in development builds
  • Update API and Qt licence documentation
  • Update documentation building instructions
  • Start reducing TitanEngine.h
  • Switch to enums in TitanEngine.h
  • Add type for GetDebugData
  • Add more types in TitanEngine.h
  • Never allow fdProcessInfo to be null #3699
  • Zero initialize TITAN_ENGINE_CONTEXT_t
  • Do not duplicate thread handles unnecessarily
  • Allow specifying exception behavior if SetThreadName breakpoint is disabled
  • Remove a few meaningless WM constants hiding real ones
  • Fix compilation for cross with latest Qt6
  • Fix column sorting in BreakpointsView
  • Clarify address title in CPUDump + add hex byte view for consistency
  • Changed ctrl+a to select all items instead of selecting all characters of search filter. by @ismaelvazquez182 in #3714
  • Fix column handling in cpu disassembly by @d2k2-git in #3712
  • Make SortFnHelper::operator< const to fix compilation on C++20
  • Use https://github.com/actions/checkout v5 by @torusrxxx in #3729
  • Implement better UX for pattern finding by @mrexodia in #3692
  • Add TraceSetStepFilter command for module filtering by @mrexodia in #3731
  • Allow user-defined blocks in trace and extend root JSON #3696
  • Fix ordinal imports display by resolving to function names by @WindowsAPI in #3701
  • Add two plugin callback for trace(StartTrace and StopTrace) (#3736)
  • add shortcut 'ActionCopyDisassembly' by @d2k2-git in #3738
  • check Buffer first on MemRead by @d2k2-git in #3737
  • Add support to be able to edit the raw bytes of a register by @ZehMatt in #3740
  • Check formatting in GitHub Actions by @mrexodia in #3741
  • Add untranslated 'Copy value' action
  • Blind fix for #3744 (divide by zero)
  • Extend SimpleErrorBox with optional hide config parameters (#3745)
  • Fix formatting
  • Update README with latest sponsor information
  • Improve SimpleTraceDialog to look a bit more polished
  • Support closing the application via taskbar during QDialog::exec
  • Fix stale taskbar preview thumbnails after closing child windows.
  • Improve graph cache invalidation and use better function entry heuristic #3751
  • Fix UI and crash issues in TraceFileReader when parsing trace files containing user-defined blocks. (#3752)
  • Rename trace coverage options to be clearer
  • Save graph image as PDF by @torusrxxx in #3728
  • Fix Restart as Admin command line argument passing by @mobile46 in #3768
  • Fix font changes not applying and dark theme border visibility by @mobile46 in #3767
  • Prevent unintended execution after declining elevation by @3rdit in #3772
  • Fix module loading when file path is stale or file is locked by @3rdit in #3777
  • "Run to user code" switched to "rtu" command by @3rdit in #3778
  • Expression validation added to breakpoint dialog (red and green borders) by @3rdit in #3781
  • Add option to detach instead of terminate when attaching to new process by @3rdit in #3780
  • Implement accessibility in RegistersView, Disassembly and most other tables by @torusrxxx in #3761
  • Add PDBs when running windeployqt
  • Add screenreader test code
  • Add a few missing accessibility names
  • Fix additional spaces in AccessibleHexDump
  • Fix a bug with reordered columns
  • Fix ViewCell role
  • Lazily populate cell arrays
  • Fix crash when parsing expression functions
  • Fix clang-cl compilation and various warnings
  • Fixed 2GB+ files causing a crash by @3rdit in #3784
  • Fix Fatal GUI Exception when using Ctrl+A in search boxes by @mobile46 in #3766
  • Ctrl+C, Shift+Insert in SearchListView.cpp by @justanotheranonymoususer in #3774
  • Optimize expression evaluation for tracing performance by @torusrxxx in #3748
  • Oops, all debug engines ended up being the same
  • Accessibility memory management fixes
  • Bump cmkr to 0.2.46
  • Fix warnings in clang 21.1.8
  • Revert "Accessibility memory management fixes"
  • add call stack highlight by module or symbol by @bbugdigger in #3791
  • faster search list filtering by @d2k2-git in #3798
  • Do not export DllMain
  • Update dbg settings on startup
  • Fix pre-commit hook (again)
  • Make windeployqt resilient against globally configured Qt environments
  • Only skip symlinked deps when copying
  • Hash dependencies to properly update them when updating deps
  • Fix patch import undo bug by @ali-asly101 in #3796
  • Test framework by @mrexodia in #3811
  • Fix testing lifecycle issues
  • Fix broken links ...
Read more

2025.08.19

19 Aug 23:58

Choose a tag to compare

August 2025: Bug fixes and stability

This release has mostly been focused on fixing bugs and improving stability over the long term.

🐛 Bugs

The migration to Visual Studio 2022 unfortunately caused some serious issues to slip through. The following bugs were fixed:

  • Systems with older versions of the Visual C++ Redistributable would crash when you started debugging.
  • Pattern finding was completely broken.
  • Systems with AVX-512 would crash when using x32dbg.
  • CPUs AVX support would always show 0 for XMM registers (thanks to @CXVUSER).

To prevent critical issues like this from slipping through we are working on an automated test system. The headless version of x64dbg introduced in the previous release was a first step in this direction, but much more work is required. This release also introduced support for AddressSanitizer, which helps prevent memory safety issues.

❓ Documentation

The documentation has now been moved to the docs folder in the x64dbg repository. This streamlines development, but also makes the project much more LLM-friendly. Practically-speaking this means you can now ask questions about x64dbg in DeepWiki and expect reasonably-useful results!

Ask DeepWiki

Some example questions:

Obviously this is no replacement for reading the documentation, but it might at least point you to some concepts to research!

🔎 Tracing

There have been quite a lot of updates to the trace recording feature over the past few months by @torusrxxx. For those not familiar, trace recording allows you to capture the registers and memory accesses for every step of the program. Think Time Travel Debugging, but on a much smaller scale. This feature can be helpful trying to understand the data flow or figuring out where a specific value first pops up when executing a function.

To start a trace recording, use Help -> Trace into... and then enable the Record trace checkbox:

You can see a reconstruction of the memory/stack (best effort, might be slow on larger traces):

This version introduces support to search for intermodular calls in the trace, which can be useful to understand where APIs get called. A blog post with more details will follow!

🤖 Scripting

❗ You might want to check out Analysis at Scale with x64dbg Automate, which introduces a Python library to automate x64dbg. There is also an MCP Server built on top of it, which allows LLMs to interact with x64dbg.

The builtin scripting feature has always been a bit lackluster, but the need for testing automation has pushed things forward. Improved command line handling was introduced by @peace-maker and you can now specify a script to execute on debuggee startup:

  x64dbg {OPTIONS} [filename] -- [extra arguments]

    x64dbg

  OPTIONS:

    -workingDir  Current working directory of new process.
    Defaults to current working directory if not specified. (optional)
    -pid         Process ID to attach to. (optional)
    -tid         Thread Identifier (TID) of the thread to resume
    after attaching (PLMDebug). (optional)
    -event       Handle to an Event Object to signal (JIT). (optional)
    -c           Command to execute Specifies the initial
    debugger command to run at start-up. (optional)
    -cf          Specifies the path and name of a script file.
    This script file is executed immediately on startup. (optional)
    -p           Alias for -pid. (optional)
    -a           Alias for -pid. (optional)
    -e           Alias for -event (optional)
    -help        Show this message. (optional)

The scripting system has been rewritten from scratch to execute all of the script commands on an event loop, which ensures everything executes in a deterministic order. A lot of bugs have been fixed too, which enables more complex scripting scenarios:

fn = RtlEnterCriticalSection
bp fn
SetBreakpointCommand fn, "scriptcmd call analyze"
ret

analyze:
  SpinCount = ReadPtr(rcx + 0x20)
  log "SpinCount: {u:SpinCount}"
  ret

The script above sets a breakpoint on RtlEnterCriticalSection. It uses a breakpoint command to execute the analyze function in the script every time the breakpoint hits, and performs some logging. For testing we can use the headless command line tool with test executables and scripts to make sure everything works as expected.

🐧 Cross Platform

Thanks to @eldarkg you can now build x64dbg in Wine with a custom CMake toolchain. Additionally the first iteration of the cross-platform branch has been merged. Slowly the GUI components will be ported to an x64dbg::widgets library that can be reused for other projects.

🤝 Community

x64dbg is a community-driven project, and this release would not have been possible without the incredible work of our contributors. A huge thank you to everyone who contributed code, reported bugs, and helped shape this release ❤️

We recently revamped the Discord community, which you can join below:

Other platforms are synchronized with the #general channel:

Slack Gitter Matrix IRC

❤️ Sponsors

This project is also made possible by the generous support of sponsors. We would like to give a special shout out to the following sponsors:

Also many thanks to my active sponsors: @LabGuy94, @grant-h, @MorpheusH3x, @re-jevi, @adam-the, @verdeckt, @emesare, @daaximus, @stevemk14ebr, @as0ni, @sedrakpc, @Dan0xE, @Invoke-RE, @leandrofroes, @shu-tom, @buzzer-re, @expend20, @crudd, @clayne, @fr0zenbag, @dzzie

If you find x64dbg valuable in your work, please consider becoming a sponsor. Your support directly funds development and helps us continue to build the future of debugging. For companies we also offer custom services depending on the level of sponsorship, please reach out for more details!

📜 Changelog

  • InitializeSignatureCheck now loads msvcp140.dll
  • Always load VC runtime from application directory #3616
  • Move https://github.com/x64dbg/docs into this repo
  • Fix snapshot timestamp format
  • Fix AVX-512 crash on 32-bit
  • Exclude unnecessary OpenGL libraries from snapshot
  • Fix bug with string formatting
  • Fix ambiguous operand size when hiding pointer sizes by @kalhotky in #3620
  • Display style values refactor and MASM style by @kalhotky in #3617
  • Revert "Fixed inverted logic" by @mrexodia in #3622
  • Improve developer experience when forking
  • Improve CONTRIBUTING guide
  • Another attempt to fix msvcp140 loading #3624
  • Unbreak x32dbg after last commit
  • Fixed pattern search by @OldGamesCracking in #3628
  • Add back -DX64DBG, closes #3634
  • Update resources translations by @torusrxxx in #3562
  • Faster disasmgetstringatwrapper by @d2k2-git in #3625
  • Fix deleting breakpoint at module base address by @kalhotky in #3629
  • Fix symbolic name help URL encoding by @kalhotky in #3630
  • Fix fastresume hiding other summary text by @kalhotky in #3631
  • Disasm value notation by @kalhotky in #3640
  • Fix incorrect "None" label for disabled trace coverage in shortcuts by @adityaxa in #3638
  • Refactor QZydis instance in Bridge class by @mrexodia in #3641
  • Automatically cancel previous workflow runs on the same branch
  • align char buffer sizes with defined limit in GuiGetDisassembly by @d2k2-git in #3627
  • Fix autocomment precedence by @kalhotky in #3632
  • Fix mnemonic brief column #3510, #3509
  • MSVC build under linux wine by @eldarkg in #3657
  • Use library for command line parsing by @peace-maker in #3516
  • Fix headless initialization and thread model
  • msvc-wine: Fix: LINK : fatal error LNK1158: cannot run 'rc.exe' by @eldarkg in #3660
  • Do not produce an import library for exe target #3663
  • Add clang-tidy...
Read more

2025.07.04

30 Jun 17:41
9683bb3

Choose a tag to compare

June 2025: Type System and Modernization

We're excited to announce a major new release of x64dbg, the open-source user mode debugger for Windows. For those new to the project, x64dbg is designed to make reverse engineering and malware analysis faster and more intuitive. This release marks a significant step forward, overhauling our core type system and modernizing our entire toolchain to bring you a more powerful and stable debugging experience.

NOTE: There were some minor issues that made the 2025.06.30 snapshot unusable (signing issue causing a Windows Defender false positive, AVX-512 support crashed in x32dbg and the VC runtime was not loaded correctly). Because of this that snapshot has been deleted and a fixed one has been put here.

✨ Revamped Type System

In previous versions, analyzing data structures was a tedious, manual process and many features were not supported. This release adds support for bitfields, enums and anonymous types, which allows all types in the Windows SDK to be represented and displayed.

The ManyTypes plugin by @snowsnowsnows (who also drove this revamp) allows you to import C header files and see the results directly in x64dbg. While we plan to streamline this workflow even further in future updates, this is a huge leap in making data inspection easier.

This isn't just about convenience; it's about speed. We've introduced drastic performance improvements to the struct widget, so you can now browse deeply nested pointers and large data structures without the lag.

19-01-53-types-update.mp4

We’ve also added a host of quality-of-life improvements:

  • Interactive type selection: While selecting the type you will instantly see what the data looks like, enabling a more interactive workflow.
  • Smarter Displays: Character arrays are now automatically rendered as strings, saving you an extra step.
  • Better Integration: You can now invoke the "Display type" action directly from the register and stack views, making it easier than ever to inspect data on the fly.

💻 AVX-512 and Half-Float Support

This release introduces support for the latest CPU instruction sets, ensuring you can analyze even the most modern applications.

  • AVX-512 Support: You now have the power to debug and analyze code that leverages the AVX-512 instruction set, a critical feature for high-performance computing and complex malware.
  • Half-Float Support: We've added support for 16-bit half-precision floating-point numbers in the dump, a feature especially useful when reversing graphics applications or machine learning models.

⚡ Small Changes, Big Impact

Sometimes it’s the little things that count. Based on your feedback, we've added several small but mighty workflow enhancements:

  • Copy Graph Image: You can now copy the function graph directly to your clipboard, making it effortless to share your findings or add visuals to your reports.
  • Copy Calling Convention Arguments: A new context menu option lets you quickly copy function arguments, streamlining the process of reconstructing code or documenting function calls.
  • Focus on Window in Handles View: You can now bring a target window to the foreground directly from the handles view, which is incredibly useful for UI-heavy debugging.
  • Revamped Launcher: The launcher now has checkboxes and an uninstall option.

image image

🚀 Modern Tooling and a New Release Cycle

We've completed a monumental migration of our entire build system to Visual Studio 2022 and CMake. This massive undertaking provides a more stable foundation, makes it easier for new developers to contribute, and accelerates the pace of future improvements. The compilation instructions were cut down from 13 steps to a single one.

There has also been movement on a headless version of x64dbg. The main focus for now is automated testing, but eventually it will be expanded to allow headless automations.

Starting with this release, we will be using CalVer (Calendar Versioning) with proper GitHub releases and tags. This will keep our releases more organized and allow package managers and users to reference specific versions more easily. Additionally Windows XP is no longer supported and for Windows 7/8.1 you will get an unskippable deprecation warning:

image

🔮 Looking Ahead: A Cross-Platform Future

We're excited to share a glimpse into our experimental cross-platform branch. This is our testbed for separating core GUI widgets into a reusable library, with the goal of bringing x64dbg's powerful tools to all major platforms (Windows, macOS, and Linux).

Current experimental tools include:

  • A simple hex viewer that uses the ImHex Pattern Language to visualize data structures.
  • A minidump viewer to browse .dmp files on any platform.
  • A remote table tool that showcases fetching data over a high-latency network.

image

These tools are still in early development and not part of the release, but they represent a critical step toward a more versatile and platform-independent future for our components.

🤝 Community

x64dbg is a community-driven project, and this release would not have been possible without the incredible work of our contributors. A huge thank you to everyone who contributed code, reported bugs, and helped shape this release ❤️

We recently revamped the Discord community, which you can join below:

You can also get the XDBG tag after joining the server:

image

Other platforms are synchronized with the #general channel:

Slack Gitter Matrix IRC

❤️ Sponsors

This project is partially made possible by the generous support of sponsors. We would like to give a special shout out to the following sponsors who donated at the highest tier since the last release:

Also many thanks to the other active sponsors: @adam-the, @verdeckt, @emesare, @daaximus, @stevemk14ebr, @as0ni, @sedrakpc, @Dan0xE, @Invoke-RE, @leandrofroes, @shu-tom, @buzzer-re, @expend20, @crudd, @clayne, @fr0zenbag, @merces, @dzzie

If you find x64dbg valuable in your work, please consider becoming a sponsor. Your support directly funds development and helps us continue to build the future of debugging. For companies we also offer custom services depending on the level of sponsorship, please reach out for more details!

📜 Changelog

  • Fix translation errors
  • Split ModuleStdTable into header and sources to fix Q_OBJECT error
  • Build with GitHub Actions by @mrexodia in #3538
  • Ignore clangd cache
  • Fix buffer overflow by @torusrxxx in #3541
  • Add dump support for half float by @torusrxxx in #3544
  • Add support for AVX512 by @torusrxxx in #3536
  • Fix compilation on MinGW (clang) by @mrexodia in #3539
  • Fix wrong icon for ActionTreatSelectionAsXXX by @torusrxxx in #3546
  • Always update the Example text's background color by @G3ph4z in #3537
  • Show launcher on first launch after installing by @whindsaks in #3521
  • New x96dbg configuration dialog by @G3ph4z in #3532
  • Make a rebuild copy the dependencies again
  • Add headless mode POC #3516
  • Fix compilation with clang-cl
  • Add some more state for the headless mode
  • Automatically download submodules when necessary
  • Updated Type Database Handling by @snowsnowsnows in #3552
  • Fix structure packing in TitanEngine.h #3563
  • Update badges
  • Improve plugin loading error messages
  • Fix errors with simple header parsing
  • Improved error reporting in DisplayType command
  • Allow configuring default max pointer depth in DisplayType
  • Small UX improvements in struct widget
  • Move "Display type" to CommonActions and add to registers/stack
  • Fix missing stdint types when building with vs2022 v120_xp toolset by @WindowsAPI in #3593
  • Fix error handling in ParseTypes
  • Added Copy Menu for Call Conv Arguments by @snowsnowsnows in #3595
  • Draw jump lines under register label; Focus on window in handles view by @torusrxxx in #3585
  • Copy graph image by @torusrxxx in #3578
  • Add IRC link to README
  • Added Type Reload Functionality in Struct View by @snowsnowsnows in #3597
  • Update AStyleHelper to only format changed files
  • Mark padding as bitfield
  • Fix a bug with GotoDialog::setInitialExpression not working twice in a row
  • Performance improvements for St...
Read more

snapshot_2025-03-15_15-57.zip

15 Mar 14:58

Choose a tag to compare

Bitbucket files

12 Apr 20:31

Choose a tag to compare

Some old Bitbucket files, you can safely ignore them.