mirror of https://github.com/x64dbg/TitanEngine
Handle STATUS_WX86_BREAKPOINT and STATUS_WX86_SINGLE_STEP in DebugLoop
When aidbg (x64) debugs a 32-bit target under WoW64, software breakpoints (int3) surface as STATUS_WX86_BREAKPOINT (0x4000001f) instead of STATUS_BREAKPOINT (0x80000003), and the step-over single step as STATUS_WX86_SINGLE_STEP (0x4000001e). Route both to the existing breakpoint/single-step handling so breakpoints are consumed and restored correctly; otherwise continue re-stops on the same address forever.
This commit is contained in:
parent
ccac889f27
commit
f425de392c
|
|
@ -591,6 +591,7 @@ __declspec(dllexport) void TITCALL DebugLoop()
|
||||||
switch((LONG)DBGEvent.u.Exception.ExceptionRecord.ExceptionCode)
|
switch((LONG)DBGEvent.u.Exception.ExceptionRecord.ExceptionCode)
|
||||||
{
|
{
|
||||||
case STATUS_BREAKPOINT:
|
case STATUS_BREAKPOINT:
|
||||||
|
case STATUS_WX86_BREAKPOINT:
|
||||||
{
|
{
|
||||||
bool bFoundBreakPoint = false;
|
bool bFoundBreakPoint = false;
|
||||||
BreakPointDetail FoundBreakPoint;
|
BreakPointDetail FoundBreakPoint;
|
||||||
|
|
@ -736,6 +737,7 @@ __declspec(dllexport) void TITCALL DebugLoop()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATUS_SINGLE_STEP:
|
case STATUS_SINGLE_STEP:
|
||||||
|
case STATUS_WX86_SINGLE_STEP:
|
||||||
{
|
{
|
||||||
if(IsDbgReplyLaterSupported)
|
if(IsDbgReplyLaterSupported)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue