关闭

如何检测程序是否被调试

标签: 破解byte测试c
2603人阅读 评论(0) 收藏 举报
 如何检测程序是否被调试,其实很简单,几行代码就行了,常应用于软件防破解等方面,但对于某些调试器而言无效(比如改进的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;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:328825次
    • 积分:3933
    • 等级:
    • 排名:第7995名
    • 原创:64篇
    • 转载:67篇
    • 译文:2篇
    • 评论:114条
    最新评论
    Opengl网站
    其它
    优秀编程网址