如何检测程序是否被调试

原创 2007年09月11日 20:22:00
 如何检测程序是否被调试,其实很简单,几行代码就行了,常应用于软件防破解等方面,但对于某些调试器而言无效(比如改进的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;
}

C#程序中判断DEBUG和RELEASE状态

 习惯了用老方式(注释的方式)来对程序进行调试,不过昨天才发现这样调试存在很大的隐患:在工程发布的时候如果忘记把该注释的代码注释掉,而让这些调试信息随工程一起发布,如果是可见的调试信息倒好发...

反调试技术常用API,用来对付检测od和自动退出程序

在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编啦之类的方法破解自己。为了了解如何破解反调试技术...

用Linux守护进程检测某个程序是否运行

用Linux守护进程检测某个程序是否运行 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedor...
  • jdh99
  • jdh99
  • 2012年02月28日 09:05
  • 8130

检测程序是否运行

  • 2012年05月03日 15:47
  • 1.47MB
  • 下载

程序猿之---C语言细节7(检测两个整型相加是否溢出)

主要内容:检测两个整型相加是否溢出 #include #include int main(int argc, char *argv[]) { /* * a和b为非负整型变量,检测a+b是...

VB检测程序是否在运行

  • 2011年11月11日 19:19
  • 4KB
  • 下载

GTK 程序 检测 网线是否连接 本地网络状态 C语言实现

思路:         主程序创建一个进程, 每2秒查看一下网络状态,然后打印输出          通过检查文件         /sys/class/net/wlan0/operstate ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何检测程序是否被调试
举报原因:
原因补充:

(最多只允许输入30个字)