-
-
[求助]一段判断是否调试的源码,帮我看看
-
发表于:
2015-1-4 21:54
3870
-
这段源码在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
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课