mirror of https://github.com/x64dbg/TitanEngine
fixed a bug with resetting hardware breakpoints when they are deleted inside the handler (thanks to Demonic Sword!)
This commit is contained in:
parent
aacd8c2eb8
commit
3462c000e0
|
|
@ -789,12 +789,14 @@ __declspec(dllexport) void TITCALL DebugLoop()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
RtlZeroMemory(&DebugRegisterX, sizeof HARDWARE_DATA);
|
if(DebugRegister[0].DrxEnabled)
|
||||||
RtlMoveMemory(&DebugRegisterX, &DebugRegister[0], sizeof HARDWARE_DATA);
|
{
|
||||||
DeleteHardwareBreakPoint(UE_DR0);
|
memcpy(&DebugRegisterX, &DebugRegister[0], sizeof(HARDWARE_DATA));
|
||||||
DebugRegisterXId = UE_DR0;
|
DebugRegisterXId = UE_DR0;
|
||||||
|
DeleteHardwareBreakPoint(UE_DR0);
|
||||||
ResetHwBPX = true;
|
ResetHwBPX = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DBGCode = DBG_EXCEPTION_NOT_HANDLED;
|
DBGCode = DBG_EXCEPTION_NOT_HANDLED;
|
||||||
|
|
@ -816,12 +818,14 @@ __declspec(dllexport) void TITCALL DebugLoop()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
RtlZeroMemory(&DebugRegisterX, sizeof HARDWARE_DATA);
|
if(DebugRegister[1].DrxEnabled)
|
||||||
RtlMoveMemory(&DebugRegisterX, &DebugRegister[1], sizeof HARDWARE_DATA);
|
{
|
||||||
DeleteHardwareBreakPoint(UE_DR1);
|
memcpy(&DebugRegisterX, &DebugRegister[1], sizeof(HARDWARE_DATA));
|
||||||
DebugRegisterXId = UE_DR1;
|
DebugRegisterXId = UE_DR1;
|
||||||
|
DeleteHardwareBreakPoint(UE_DR1);
|
||||||
ResetHwBPX = true;
|
ResetHwBPX = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DBGCode = DBG_EXCEPTION_NOT_HANDLED;
|
DBGCode = DBG_EXCEPTION_NOT_HANDLED;
|
||||||
|
|
@ -843,12 +847,14 @@ __declspec(dllexport) void TITCALL DebugLoop()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
RtlZeroMemory(&DebugRegisterX, sizeof HARDWARE_DATA);
|
if(DebugRegister[2].DrxEnabled)
|
||||||
RtlMoveMemory(&DebugRegisterX, &DebugRegister[2], sizeof HARDWARE_DATA);
|
{
|
||||||
DeleteHardwareBreakPoint(UE_DR2);
|
memcpy(&DebugRegisterX, &DebugRegister[2], sizeof(HARDWARE_DATA));
|
||||||
DebugRegisterXId = UE_DR2;
|
DebugRegisterXId = UE_DR2;
|
||||||
|
DeleteHardwareBreakPoint(UE_DR2);
|
||||||
ResetHwBPX = true;
|
ResetHwBPX = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DBGCode = DBG_EXCEPTION_NOT_HANDLED;
|
DBGCode = DBG_EXCEPTION_NOT_HANDLED;
|
||||||
|
|
@ -870,12 +876,14 @@ __declspec(dllexport) void TITCALL DebugLoop()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
RtlZeroMemory(&DebugRegisterX, sizeof HARDWARE_DATA);
|
if(DebugRegister[3].DrxEnabled)
|
||||||
RtlMoveMemory(&DebugRegisterX, &DebugRegister[3], sizeof HARDWARE_DATA);
|
{
|
||||||
DeleteHardwareBreakPoint(UE_DR3);
|
memcpy(&DebugRegisterX, &DebugRegister[3], sizeof(HARDWARE_DATA));
|
||||||
DebugRegisterXId = UE_DR3;
|
DebugRegisterXId = UE_DR3;
|
||||||
|
DeleteHardwareBreakPoint(UE_DR3);
|
||||||
ResetHwBPX = true;
|
ResetHwBPX = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DBGCode = DBG_EXCEPTION_NOT_HANDLED;
|
DBGCode = DBG_EXCEPTION_NOT_HANDLED;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue