监视函数是否被设置 INT3 断点
#include "stdafx.h"#include <windows.h>
#include <iostream>
using namespace std;
BOOL CheckBreakPoint();
void MyMessage();
HWND hwnd;
int main(int argc, char* argv[])
{
hwnd=GetDesktopWindow();
//Messag
if(CheckBreakPoint())
{
cout<<"MessageBox 被设置了断点";
}
else
{
cout<<"MessageBox 没有被设置断点";
}
MyMessage();
return 0;
}
BOOL CheckBreakPoint()
{
FARPROC uaddr;
BYTE Mark=0;
(FARPROC&)uaddr=GetProcAddress(LoadLibrary("user32.dll"),"MessageBoxA");
Mark=*(BYTE*)uaddr;
if(Mark==0xCC)
return TRUE;
else
return FALSE;
}
void MyMessage()
{
MessageBox(hwnd,TEXT("ASD"),TEXT("ASDF"),0);
}
OD中的Int3断点的主要功能是:在需要下断点的执行代码处将原来的代码改成0xCC,程序执行到此处后会报一个Int3异常,由OD捕获并处理。当要执行该行代码时,将原来的代码改回来并执行,然后再恢复断点,这样就不会影响程序的正常运行了。
页:
[1]