首页
社区
课程
招聘
[求助]getstartupinfo 检查自己被调试?
发表于: 2008-11-21 17:40 3802

[求助]getstartupinfo 检查自己被调试?

2008-11-21 17:40
3802
论坛上有篇文章说这能检查自己是否被调试,不过我查了MSDN 此函数并没有返回值 它是如果做检查的呢?

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
函数通过填充结构体来返回信息.请查阅MSDN上STARTUPINFO结构体的定义.

其检测调试器的原理如下(应该学会使用论坛的搜索功能):

Window创建进程的时候会把STARTUPINFO结构中的值设为0,而通过调试器创建进程的时候会忽略这个结构中的值,也就是结构中的值不为0,所以可以利用这个来判断是否在调试程序。
  STARTUPINFO si;
  ZeroMemory( &si, sizeof(si) );
  si.cb = sizeof(si);
  GetStartupInfo(&si);
  if ( (si.dwX != 0) || (si.dwY !=0)
    || (si.dwXCountChars != 0) || (si.dwYCountChars !=0 )
    || (si.dwFillAttribute != 0) || (si.dwXSize != 0)
    || (si.dwYSize != 0) )
    return true;
  else  
    return false;
2008-11-21 18:14
0
雪    币: 32
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那我在调试的时候也把它设为0不就可以躲过了?
2008-11-21 18:17
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
4
GetStartupInfo只是一种检测调试器的方法,反调试有非常多的方法,但没有任何一种反调试手段是万能的。

请看这篇文章。(还是强调在提问之前试试搜索功能,既节约自己的时间,也节约别人的时间)

http://bbs.pediy.com/showthread.php?t=70470&highlight=getstartupinfo
2008-11-21 18:21
0
雪    币: 32
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好的,多谢彭兄~~
2008-11-22 09:48
0
游客
登录 | 注册 方可回帖
返回
//