- UID
- 66114
注册时间2010-4-1
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 慵懒 2019-3-12 17:25 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
|
#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捕获并处理。当要执行该行代码时,将原来的代码改回来并执行,然后再恢复断点,这样就不会影响程序的正常运行了。 |
|