7,763
社区成员
发帖
与我相关
我的任务
分享
case EXCEPTION_DEBUG_EVENT:
{
if((DWORD)DebugEv.u.Exception.ExceptionRecord.ExceptionAddress==WAR3_BREAK_ADDRESS)
{
number++;
HANDLE hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, DebugEv.dwThreadId);
SuspendThread(hThread);
CONTEXT Regs = {0};
Regs.ContextFlags = CONTEXT_DEBUG_REGISTERS|CONTEXT_INTEGER;
::GetThreadContext(hThread, ®s);
Regs.Esi=Regs.Esi+4;
Regs.Dr0=WAR3_BREAK_ADDREST;
Regs.Dr7=BREAK_OPEN;
::SetThreadContext(hThread, ®s);
ResumeThread(hThread);
CloseHandle(hThread);
}
if((DWORD)DebugEv.u.Exception.ExceptionRecord.ExceptionAddress==WAR3_BREAK_ADDREST)
{
HANDLE hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, DebugEv.dwThreadId);
SuspendThread(hThread);
CONTEXT Regs = {0};
Regs.ContextFlags = CONTEXT_DEBUG_REGISTERS|CONTEXT_INTEGER;
::GetThreadContext(hThread, ®s);
Regs.Dr0=WAR3_BREAK_ADDRESS;
Regs.Dr7=BREAK_OPEN;
::SetThreadContext(hThread, ®s);
ResumeThread(hThread);
CloseHandle(hThread);
}
dwContinueStatus = DBG_CONTINUE;
break;
}