这是一个系统定义的函数,为什么我用的时候感觉不大对。
请各位指教一下
void CTestODDlg::IsHaveOD()
{
if (IsDebuggerPresent() )
{
AfxMessageBox("There is OD!");
}
else
{
AfxMessageBox("There is not.");
}
}
void CTestODDlg::OnButton1()
{
// TODO: Add your control notification handler code here
IsHaveOD();
}
这个是我自己写的代码。但是我没有启动OD,它为什么提示有呢。仅仅有一次是成功的,那就是我第一次运行的时候没有开OD,提示我没有。然而当我开过一次OD后,他永远提示我存在OD。我将OD关闭后,即使是删了DEBUG文件或者重启仍然不行。
然后将看雪兄的代码放上去也是这个问题
/*--------------------------------------------------------------
IsDebuggerPresent.cpp -- 检测用户模式调试器(如OllyDbg)
(c) www.pediy.com code by 段钢, 2003.11
--------------------------------------------------------------*/
#include <WINDOWS.H>
BOOL IsInDebugger();
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{
if( IsInDebugger() )
MessageBox(NULL,TEXT ("u are debugging me !"),TEXT ("OK"),MB_ICONEXCLAMATION);
else
MessageBox(NULL,TEXT ("not debugged!"),TEXT ("OK"),MB_ICONEXCLAMATION);
return 0;
}
//////////////////////////////////////////////////////////////////////
BOOL IsInDebugger()
{
HINSTANCE hInst = LoadLibrary("kernel32.dll");
if (hInst != NULL)
{
FARPROC pIsDebuggerPresent = GetProcAddress(hInst, "IsDebuggerPresent");
if (pIsDebuggerPresent != NULL)
return pIsDebuggerPresent();
}
return FALSE;
}
求助。。。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)