首页
社区
课程
招聘
[原创]windows常用的反调试技术-静态反调试技术
发表于: 2019-2-21 20:54 8623

[原创]windows常用的反调试技术-静态反调试技术

2019-2-21 20:54
8623
1.反调试技术的简单总结。根据破解的方法反调试技术大致可以分为静态与动态两组。调试运用了静态调试技术的程序文件的时候,只要在开始破解一次就可以全部解除反调试限制,动态调试要一边调试一边破解。简单的总结如下图所示。

2.静态反调试技术
          主要用来检测自身是否处于被调试状态,若处于被调试状态,则执行非常规代码组织。

2.1 PEB
       利用PEB可以判断进程是否处于被调试状态,借助FS段寄存器所指的TEB 结构体可以获取进程的PEB结构体,FS[0x30]= address of PEB,或者先获取TEB再获取PEB,   FS[0x18]=address of TEB

       2.1.1 BeingDebugged(0x2)
       BeingDebug成员用来判断进程是否处于被调试状态,被调试的时候他的值为1.
       IsDebuggerPresent(),用来对PEB进行判断
       破解:直接用od将BeingDebugged设置为0就行了

       2.1.2 Process Heap(0x18)
      
       PEB.Process Heap指向HEAP指针结构体
       GetProcessHeap()可以访问PEB,ProcessHep成员
       程序正常运行时 Heap.Flags成员(0xC)值为0x2,Heap.ForceFlags值为0x0,调试状态的时候这些值会改变
       破解:将相应的值正常设置为0x2和0x0就可以了

       2.1.3 NtGlobalFlag(0x68)
       调试的时候NtGlobalFlag会被设置成0x70,检测改制就可以检测程序是否处于调试状态。
       破解,将PEB.NtGlobalFlag值为0就可以了,附加调试的时候,NtGlobalFlag的值是不变的
   
 2.2 NtQueryInformationProcess()
        通过该函数可以获取各种与进程相关的信息
       
      设置第二个参数ProcessInformationClass为指定值,并调用该函数,相关信息就会被设置到第三个参数ProcessInformation里面
       ProcessInformationClass是枚举类型

       2.2.1 ProcessDebugPort(0x7)传入的是值
       进程处于调试状态就会为它分配一个调试端口,Debug Port,进程处于调试的时候,变量dwDebugPort被设置为0xffffffff,非调试状态的时候,dwDebugPort被设置为0x0
       checkRemoteDebuggerPresent()函数会调用ProcessDebugPort进行检测,不仅仅可以用来检测当前进程,还可以用来检测其它进程是否处于调试状态。
        2.2.2  ProcessDebugObjectHandle(0x1E)
        调试的时候会生成调试对象(DebugObject),,若进程处于调试状态的时候,调试对象句柄值就存在,处于非调试状态的时候,调试对象句柄值为NULL.
 
        2.2.3 ProcessDebugFlags(0x1f)
        检测Debug Flags(调试标志)的值可以判断进程处于调试状态,通过函数第三个参数就可以获取调试标志的值,若为0,则处于调试状态,若为1,则处于非调试状态。
       
         2.2.4破解之法

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-2-22 14:57 被wwzzww编辑 ,原因: 错字
收藏
免费 2
支持
分享
最新回复 (7)
雪    币: 6124
活跃值: (4666)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
ZwSetInformationThread  这个函数的效果说明有误,ThreadHideFromDebugger的表现为使调试器无法接受到调试事件,造成调试器被调试器退出的应该是其他原因。
2019-2-22 00:12
0
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢大佬分享
2019-2-22 13:06
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
不错 很好的总结
2019-2-22 13:06
0
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
5
感谢分享~ 
2019-2-25 09:51
0
雪    币: 301
活跃值: (275)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
6
这不是《逆向工程核心原理》里的内容吗?
2019-5-6 07:46
0
雪    币: 300
活跃值: (2477)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mark
2019-5-6 09:06
0
雪    币: 168
活跃值: (378)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
抄课本也能优...
2020-10-22 18:18
0
游客
登录 | 注册 方可回帖
返回
//