如何检测程序是否被调试

 如何检测程序是否被调试,其实很简单,几行代码就行了,常应用于软件防破解等方面,但对于某些调试器而言无效(比如改进的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;
}
阅读更多
文章标签: 破解 byte 测试 c
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭