首页
社区
课程
招聘
[求助]一段判断是否调试的源码,帮我看看
发表于: 2015-1-4 21:54 3869

[求助]一段判断是否调试的源码,帮我看看

2015-1-4 21:54
3869
这段源码在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

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
会。不过这种反调试一般都被插件屏蔽了。
2015-1-4 22:14
0
雪    币: 208
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
为什么在win 7里 没有调试的情况下,后面两句 也会跳转到 coderui_exit

  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”标志位处跳,执行退出代码。
2015-1-4 22:28
0
雪    币: 208
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
还是没人知道原因
2015-1-9 19:13
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这么简单的问题自己琢磨吧
2015-1-9 19:56
0
游客
登录 | 注册 方可回帖
返回
//