-
-
[求助]一段判断是否调试的源码,帮我看看
-
发表于:
2015-1-4 21:54
3861
-
这段源码在VC6.0 xp下编译,程序在win 7 win 8中运行还会正常判断是否调试吗
void PEB_NtGlobalFlag()
{
_asm
{
jmp Coderui; //先跳转到“Coderui”处去执行后边的判断代码。
Coderui_exit: //标志位。跳到这里后,然后执行退出代码。
CALL CloseWindows;
retn; //用这招当退出,还会异常,够狠(其它地方也可以这么做)。
Coderui: //标志位。跳到这里后,可以继续执行后边的代码。
//ebx = PEB
mov ebx,fs:[0x30];
cmp dword ptr [ebx+0x68],0; //Check if PEB.NtGlobalFlag != 0
jnz coderui_exit; //发现被调试,向“Coderui_exit”标志位处跳,执行退出代码。
mov eax,[ebx+0x18]; //eax = PEB.ProcessHeap
cmp dword ptr [eax+0x0c],2; //Check PEB.ProcessHeap.Flags
jnz coderui_exit; //发现被调试,向“Coderui_exit”标志位处跳,执行退出代码。
cmp dword ptr [eax+0x10],0; //Check PEB.ProcessHeap.ForceFlags
jnz coderui_exit; //发现被调试,向“Coderui_exit”标志位处跳,执行退出代码。
}
}
为什么在win 7里 没有调试的情况下,后面两句 也会跳转到 coderui_exit
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!