Duncan Ogilvie
ccac889f27
Defer deleted breakpoints until step finishes
2026-07-18 12:18:18 +02:00
Duncan Ogilvie
810ab65f10
Merge pull request #35 from x64dbg/membp-race
...
Fix race condition when large-region memory breakpoints
2026-07-16 14:58:19 +02:00
Duncan Ogilvie
7acc78afd1
Merge pull request #32 from colinsenner/fix-skip-int3
...
fixes an issue where you cannot step over int3 instructions even with…
2026-07-16 13:24:15 +02:00
Duncan Ogilvie
fc5da46322
Merge pull request #34 from x64dbg/per-thread-stepping
...
Per-thread stepping state + fix hardware-breakpoint reset race on thread exit
2026-07-16 13:23:00 +02:00
Duncan Ogilvie
0bb4e1ab9b
Fix race condition when large-region memory breakpoints
2026-07-16 13:22:36 +02:00
Duncan Ogilvie
ed4bdd1a01
Address review: preserve other hardware breakpoints and per-thread step state on thread exit
...
Two fixes from PR review of the thread-exit reset-recovery:
- When restoring the hardware breakpoint after the stepped-over thread exits, rebuild
each still-suspended thread's debug registers from the authoritative DebugRegister[]
table (re-arming every enabled slot, as CREATE_THREAD does) instead of from the
exiting thread's now-gone context. The old code rebuilt DR7 from GetContextData()
(the dead thread), writing a DR7 with only the restored slot to every thread and
silently disabling any other hardware breakpoint. The restore is also moved before
the threads are resumed, since SetThreadContext does not reliably update the debug
registers of a running thread.
- Erase the per-thread single-step state in the EXIT_THREAD handler. A thread can exit
after StepInto() armed its step but before the trap event arrives; leaving the entry
behind means a reused thread id inherits it (StepInto declines to arm, or a later
single-step fires the dead thread's callback).
2026-07-16 02:28:39 +02:00
Duncan Ogilvie
ba2a3aa7c8
Complete orphaned breakpoint step-over reset when the stepped thread exits
...
If a thread is terminated (e.g. by ExitProcess) while it is in the middle of a
breakpoint step-over - its breakpoint temporarily removed and a restore pending on
its next single-step - the EXIT_THREAD handler cleared ThreadBeingProcessed but left
the reset state (ResetBPX/ResetHwBPX/ResetMemBPX) armed and the breakpoint removed.
The next thread's event then consumed that orphaned reset and was misinterpreted as a
step-over reset, producing a stray single-step that was passed to the debuggee
unhandled and crashed it. This was most visible with hardware breakpoints under
multi-thread contention. Complete the pending restore when the thread-being-processed
exits.
2026-07-15 20:11:37 +02:00
Duncan Ogilvie
e80b959150
Keep per-thread stepping state
...
Closes #21
Closes #20
2026-07-15 16:02:34 +02:00
Colin Senner
4059d5a899
Merge remote-tracking branch 'origin/fix-skip-int3' into fix-skip-int3
2026-07-13 00:03:20 -07:00
Colin Senner
363a961c8c
fixes an issue where you cannot step over int3 instructions even with Skip INT3 Stepping enabled
2026-07-13 00:02:35 -07:00
Colin Senner
54b37b9bae
fixes an issue where you cannot step over int3 instructions even with Skip INT3 Stepping enabled
2026-07-12 23:49:58 -07:00
Duncan Ogilvie
ec7a8b9352
Code formatting
2026-04-13 11:41:19 +02:00
Duncan Ogilvie
7a114df3d5
Honor no-console mode for debuggee launch
2026-04-13 11:22:28 +02:00
Duncan Ogilvie
a62925db7a
Make everything standards-compliant
2026-04-12 17:38:04 +02:00
Duncan Ogilvie
4cdefb80c6
Add CMake project
2026-04-12 15:11:17 +02:00
Duncan Ogilvie
95f332cacd
Vendor distorm and scylla_wrapper
2026-04-12 13:49:25 +02:00
Duncan Ogilvie
1232bce7f6
Merge pull request #30 from rafaelrfreitas/fix-writeonly-mem-bps
...
fix: ensure write-only breakpoints trigger on Copy-on-Write pages
2026-03-28 14:35:33 +01:00
Rafael
ebdc74d23b
fix: ensure write-only breakpoints trigger on Copy-on-Write pages
...
- Replaced the implicit bit-shift logic with an explicit mapping
to prevent the OS from silently duplicating pages via Copy-on-Write.
- Added explicit cases for PAGE_WRITECOPY and PAGE_EXECUTE_WRITECOPY.
2026-03-28 12:03:17 +00:00
Duncan Ogilvie
e6570203cc
Merge pull request #29 from 3rdit/fix/breakpoint-deletion-race
...
Fix multi-thread breakpoint deletion race condition
2026-01-10 14:49:38 +01:00
AzuLX
5cc80cf3d9
track deleted breakpoints to handle stale events safely
2026-01-10 12:36:40 +00:00
AzuLX
8072f96a26
fix multi-thread breakpoint deletion race condition
2026-01-05 15:47:03 +00:00
Duncan Ogilvie
f6c9698fd7
Merge pull request #28 from 3rdit/fix/hwbp-thread-suspension
...
Fix thread suspension when hardware breakpoint is disabled during callback
2026-01-04 23:42:29 +01:00
AzuLX
b4a11cb2df
prevent thread suspension when HWBP is disabled during callback
2026-01-04 21:01:42 +00:00
Duncan Ogilvie
ea05d920b7
Fix formatting
2025-08-18 03:29:50 +02:00
Duncan Ogilvie
3db7179373
Merge pull request #26 from micronn/fix-membpx-pageboundary
...
Fix memory breakpoints when an access spans an extra page
2025-08-17 20:28:06 +02:00
Duncan Ogilvie
2d1dcd7e1c
Merge pull request #27 from CXVUSER/x64dbg
...
Fix legacy SSE not working on pre-AVX processors
2025-08-17 20:27:48 +02:00
xcv
c7c6956698
Fix legacy SSE not working on pre-AVX processors
2025-08-17 21:56:41 +05:00
micronn
12f896c57e
Fix memory breakpoints when an access spans an extra page
2025-07-05 21:17:19 +02:00
Duncan Ogilvie
158ab56643
Prepare for release
2025-07-04 17:20:04 +02:00
Duncan Ogilvie
02d0be742a
Fix crash with AVX-512 on 32-bit
...
Closes #25
2025-07-04 17:17:01 +02:00
Duncan Ogilvie
f23d23a5f5
Merge pull request #23 from torusrxxx/AVX512
...
Fix clearing wrong structure
2025-05-24 18:30:41 +02:00
torusrxxx
ded0912814
Fix clearing wrong structure
2025-03-31 11:14:47 +08:00
Duncan Ogilvie
2674540368
Merge pull request #22 from torusrxxx/AVX512
...
Add support for AVX512
2025-03-30 12:44:51 +02:00
torusrxxx
1aae30c447
allow using k0 register
2025-03-19 00:23:10 +08:00
torusrxxx
c37f9978fb
Add support for AVX512
2025-03-11 19:01:16 +08:00
Duncan Ogilvie
49f59781da
Merge pull request #16 from shocoman/memory-read-safe-page-bug
...
Fix 'MemoryReadSafe' not restoring original memory protection correctly
2023-10-28 15:18:43 +02:00
Duncan Ogilvie
5484a49237
Merge pull request #18 from shocoman/proper-membp-3-public
...
Implement memory breakpoints that are not page-aligned
2023-10-28 15:18:23 +02:00
shocoman
4bac132514
Fix 'MemoryReadSafe' not restoring original memory protection correctly
2023-10-20 20:57:14 +07:00
Duncan Ogilvie
a19a7935de
Merge pull request #15 from ZehMatt/fix-stepping-state
...
Fix the stepping issue
2023-10-20 14:30:34 +02:00
shocoman
76c1b86250
Implement memory breakpoints that are not page-aligned
2023-10-20 17:48:29 +07:00
ζeh Matt
40395549f9
Reset single stepping state when debugger pauses on exceptions
2023-09-06 23:22:22 +03:00
Duncan Ogilvie
01d0d1854f
Remove unnecessary FlushInstructionCache
2023-07-08 13:20:30 +02:00
Duncan Ogilvie
490ce02fb3
Also implement #14 for UD2 breakpoints
2023-07-08 12:50:02 +02:00
Duncan Ogilvie
b862c2b36f
Merge pull request #14 from shocoman/fix-double-pushfd-bug
...
Fix a bug that could change a stack value after stepping into a PUSHF instruction with a singleshoot breakpoint
2023-07-08 12:02:41 +02:00
shocoman
7a7530cef1
Fix a bug that can change a stack value after stepping into a PUSHF instruction with a singleshoot breakpoint
2023-06-04 14:27:25 +07:00
Duncan Ogilvie
882bc1bc30
Delete a bunch of unused functionality
2023-03-04 01:38:22 +01:00
Duncan Ogilvie
568334cdd4
Switch to the v141_xp toolset for XP support
2022-10-07 12:19:13 +02:00
Duncan Ogilvie
e005ba44b6
Relocate the image with No ASLR
2022-09-11 15:52:18 +02:00
Duncan Ogilvie
259f1e88e3
Improve no ASLR by retrying
2022-09-10 01:13:09 +02:00
Duncan Ogilvie
d0b7e5addd
Remove a redundant GetThreadContext for synchronized breakpoints
2022-09-09 22:38:16 +02:00