判断当前程序是不是被调试

BOOL isdebugger(){
    int name[4];//里面放入字节码 查询信息
    name[0] = CTL_KERN;//内核
    name[1] = KERN_PROC;//进程查询
    name[2] = KERN_PROC_PID; //进程id来查
    name[3] = getpid();
    struct kinfo_proc info; //接受进程信息的结构体
    size_t info_size = sizeof(info);//结构体大小
    int error = sysctl(name, sizeof(name)/sizeof(*name), &info, &info_size, 0, 0);
    assert(error==0);//0 没有错误
   //p_flag 是一个数字,这个数字中的12位是不是1 来表示是不是debug
    return ((info.kp_proc.p_flag & P_TRACED) !=0);
    
}

你可能感兴趣的:(判断当前程序是不是被调试)