您的位置:首页 > 其它

如何检测程序是否被调试

2007-09-11 20:22 337 查看
如何检测程序是否被调试,其实很简单,几行代码就行了,常应用于软件防破解等方面,但对于某些调试器而言无效(比如改进的OllyDbg--OllyICE)。
下面是C+asm代码,大家可以试试。
#include <stdio.h>
#include <conio.h>
int IsDebugged()
{
__asm
{
mov eax, fs: [30h] //获取线程环境块中对应的进程环境块的地址
movzx eax, byte ptr[eax + 2h] //获取BebingDebugged标志的值
or al, al //测试BebingDebugged标志的值
jz FLAG1
mov eax, 1
jmp END
FLAG1:
mov eax, 0 //推荐使用xor eax,eax语句
END:
}
}

int main()
{
if (IsDebugged())
{
printf("有调试器!/n");
}
else
{
printf("无调试器!/n");
}
getch();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: