isbpx.cpp

来自「此为本书的配套光盘.本书结合实例」· C++ 代码 · 共 36 行

CPP
36
字号
/*--------------------------------------------------------------
   IsBPX.cpp -- 断点检测
                           (c) www.pediy.com 段钢, 2003
  --------------------------------------------------------------*/
#include <windows.h>
BOOL IsBPX(void * address);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{	
	void *addr;
    addr=MessageBox;

	if( IsBPX(addr) )
		MessageBox(NULL,TEXT ("被SoftICE设断跟踪!"),TEXT ("OK"),MB_ICONEXCLAMATION);
	else
       	MessageBox(NULL,TEXT ("没发现被跟踪!"),TEXT ("OK"),MB_ICONEXCLAMATION);
	return 0;
}

//////////////////////////////////////////////////////////////////////
//

BOOL IsBPX(void * address)
{
 _asm {
	   mov esi,address    // 被监视函数的地址
       mov al,[esi]       // 取该函数机器码 
	   cmp al,0xCC      // 检测机器码是否为CCh?
	   je BPXed         // 如是,则函数被设断跟踪	
	 }
  return FALSE;
BPXed: 
  return TRUE;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?