IsDebuggerPresent VC6.0编译时会报连接错误
来源:互联网 发布:java web 分层 编辑:程序博客网 时间:2024/05/29 09:04
IsDebuggerPresent函数可以用来检测本进程是否处于被调试状态,当然,这种方法的实用性不大。
此函数在winbase.h中声明如下:WINBASEAPI BOOL WINAPI IsDebuggerPresent(void);
如果本进程当前正在被调试则返回1,否则返回0。
此函数在winbase.h中声明如下:WINBASEAPI BOOL WINAPI IsDebuggerPresent(void);
如果本进程当前正在被调试则返回1,否则返回0。
直接调用此函数的源程序在用VC6.0编译时会报连接错误,原因是kernel32.lib中找不到_IsDebuggerPresent这个符号。为了使用此函数,你不得不使用LoadLibrary动态加载kernel32.dll,或者使用GetModuleHandle获取kernel32.dll的映像地址,然后使用GetProcAddress取得IsDebuggerPresent的地址。
代码如下:
BOOL (*IsDebuggerPresent)();
HMODULE hModule=GetModuleHandle("kernel32.dll");
IsDebuggerPresent = (BOOL(*)())GetProcAddress(hModule, "IsDebuggerPresent");
反汇编kernel32.dll观察IsDebuggerPresent的代码可以看到:
7C813093 64:A1 18000000 mov eax, dword ptr fs:[18] |kernel32.IsDebuggerPresent
7C813099 8B40 30 mov eax, dword ptr [eax+30]
7C81309C 0FB640 02 movzx eax, byte ptr [eax+2]
7C8130A0 C3 ret
7C813099 8B40 30 mov eax, dword ptr [eax+30]
7C81309C 0FB640 02 movzx eax, byte ptr [eax+2]
7C8130A0 C3 ret
- IsDebuggerPresent VC6.0编译时会报连接错误
- vc6.0 连接错误
- VC6.0连接错误
- VC6.0 编译常见错误
- vc6编译报错
- VC6.0 导入VS2005 报R6034错误
- VC6.0及其以上版本编译连接错误和响应解决方案汇总-不断更新中
- VC6编译连接设置
- VC6.0编译错误解决方法集锦
- VC6.0编译错误解决方法集锦
- vc6.0转vs2008连接错误
- vc6.0 lnk 2005连接错误处理
- VC6编译错误解决
- VC6编译错误总结
- VC6编译错误解决
- isdebuggerpresent
- 编译和链接 - VC6.0编译错误解决方法集锦
- VC6编译错误error C2893
- 恋人过早同居的3个悲惨结局
- 黑马程序员-数据库基础语法总结
- Ruby on Rails与Java(转)
- 人生如戏,戏如人生
- android存储---sqlite浅谈
- IsDebuggerPresent VC6.0编译时会报连接错误
- 阿里淘宝体验系列1-店铺装修这点事儿
- RSA算法实现与蒙哥马利算法(转)
- 冒泡 输入
- RAC10g环境修改VIP地址
- 如何从后台开启android蓝牙的可见性以及始终保持可见性
- 数学空间引论
- const总结
- 素数筛选法----孪生素数问题