您的位置:首页 > 其它

监视函数是否被设置 INT3 断点

2010-05-09 09:00 183 查看
OD中的Int3断点的主要功能是:在需要下断点的执行代码处将原来的代码改成0xCC,程序执行到此处后会报一个Int3异常,由OD捕获并处理。当要执行该行代码时,将原来的代码改回来并执行,然后再恢复断点,这样就不会影响程序的正常运行了。

#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);
}


在 messageboxa 的第一条指令(mov edi,edi)出 F2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: