| 
注册时间2010-4-1
阅读权限30
最后登录1970-1-1UID66114 龙战于野 
 
 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捕获并处理。当要执行该行代码时,将原来的代码改回来并执行,然后再恢复断点,这样就不会影响程序的正常运行了。
 | 
 |