3,882
社区成员




#include <Windows.h>
#include <iostream>
TCHAR szName[] = TEXT("f://primer.exe");
int main()
{
//加载被调试进程
HANDLE hProcess, hThread;
DWORD threadID, processID;
DEBUG_EVENT dEvent;
STARTUPINFO si;
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW;
PROCESS_INFORMATION pi;
CreateProcess(NULL, szName, NULL, NULL,NULL,DEBUG_PROCESS|DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &si, &pi);
hProcess = pi.hProcess;
hThread = pi.hThread;
processID = pi.dwProcessId;
threadID = pi.dwThreadId;
//接收调试事件
while (WaitForDebugEvent(&dEvent, INFINITE))
{
switch (dEvent.dwDebugEventCode)
{
case EXCEPTION_DEBUG_EVENT:
switch (dEvent.u.Exception.ExceptionRecord.ExceptionCode)
{
case EXCEPTION_BREAKPOINT:
MessageBoxA(NULL, "INT 3", "EXCEPTION", 0);
break;
case EXCEPTION_SINGLE_STEP:
MessageBoxA(NULL, "F7", "EXCEPTION", 0);
break;
}
}
ContinueDebugEvent(processID, threadID, DBG_CONTINUE);
}
return 0;
}