首页
社区
课程
招聘
[原创]Windows 自建调试初探
发表于: 1天前 575

[原创]Windows 自建调试初探

1天前
575


 在软件安全领域,调试是逆向分析、漏洞挖掘与恶意代码研究的核心手段。然而,随着软件保护技术的不断演进,调试早已不再是一件"理所当然"的事——它变成了一场攻与防之间持续升级的博弈。  

 反调试经常出现在商业保护壳(如 VMProtect、Themida)、游戏反作弊系统(如 BattlEye、EAC),乃至各类恶意软件,无不将反调试作为自我保护的第一道防线。 使得传统调试器在面对这类目标时举步维艰。



想要在调试反调试上面做攻防就要理解windows调试体系




1. 进程附加与脱离  

BOOL DebugActiveProcess(DWORD dwProcessId);

附加成功后,目标进程所有线程会被挂起,并触发一批初始调试事件(模块加载、线程创建等)  

BOOL DebugActiveProcessStop(DWORD dwProcessId);

从目标进程脱离调试,目标进程继续运行  


2. 调试事件接收  

调试循环的核心驱动函数,阻塞等待目标进程产生调试事件  

DEBUG_EVENT 结构:  


3. 恢复执行  

处理完调试事件后必须调用,否则目标线程永远挂起  


4. 辅助函数  

强制在目标进程中注入一个 INT3 断点, 本质是在目标进程中创建一个远程线程执行 DbgBreakPoint()


5. 内存操作函数  

读取目标进程代码、扫描断点特征、读取数据结构  


写入 INT3 软断点(0xCC)、Patch 代码、修改 PEB 标志  


修改目标进程内存页的保护属性  


查询目标进程某地址的内存属性(基址、大小、类型、保护属性)  


6. 线程上下文控制函数  

读取目标线程的完整寄存器状态    调用前先 SuspendThread暂停线程


将修改后的上下文写回目标线程  设置硬件断点、控制单步执行、修改 RIP 跳转流程   调用后 ResumeThread  恢复线程



f6dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6S2P5i4W2#2j5$3g2V1k6h3#2A6M7X3u0S2M7#2)9J5c8W2N6A6L8X3c8G2N6%4y4Q4x3X3c8d9k6i4y4W2j5i4u0U0K9q4)9J5k6p5E0W2M7X3&6W2L8q4)9J5k6q4N6d9d9#2)9J5k6l9`.`.

WRK 是微软官方开放给学术界的 Windows NT 内核核心源代码,是真实 Windows 内核(XP x64 / Server 2003 SP1)的裁剪版,不是模拟、不是重写,就是真实内核的源码。   能够基于真实的 Windows NT 内核做教学和研究。  


新手推荐阅读WRK来了解windows调试体系的流程,只需要从三环那些dbg函数从kernel32.dll一直逆到内核再逆回去即可,熟悉后可配合符号分析新版本ntoskrnl.exe,windows调试总的来说体系变化不大


可以参考之前部分文章分析了一部分:https://bbs.kanxue.com/thread-288064.htm

因为有wrk源码参考网上资料也很多,且全部分析篇幅较大就省略了


如果了解到windows调试体系反调试就很简单,在进程被调试和和非调试状态下,会有很多的结构体数据标志位不同,有些标志位被调试所依赖,如果能获取到这些标志位就能检测到是否被调试


详细可参考下面网站

08fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8Y4c8A6i4K6u0V1k6r3g2T1N6h3N6Q4x3X3g2U0K9r3g2U0K9%4m8G2K9h3&6@1i4K6u0W2j5$3!0E0i4K6u0r3


调试标志位

异常干扰



当然还有一些内核层面的反调试,例如把某个锁锁住ExAcquireFastMutex(&DbgkpProcessDebugPortMutex),总而言之就是在调试体系上搞事情


Hook dbg函数接管调试流程并重构 把那些被检测的标志位处理掉并且不影响正常调试流程 +自己管理调试对象dbgport


问题1.x64内核引入PG不能随便hook内核

答:

inline hook win7版本可以补丁过掉PG


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

收藏
免费 29
支持
分享
最新回复 (17)
雪    币: 2987
活跃值: (6658)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
牛逼牛逼牛逼牛逼牛逼
1天前
0
雪    币: 217
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
点赞后再看
1天前
0
雪    币: 155
活跃值: (4226)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习
1天前
0
雪    币: 9128
活跃值: (3884)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
have a look
1天前
0
雪    币: 1642
活跃值: (2693)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
666
1天前
0
雪    币: 206
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
6666666666666666
1天前
0
雪    币: 216
活跃值: (2675)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
666
1天前
0
雪    币: 1775
活跃值: (234)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
先赞后看
22小时前
0
雪    币: 188
活跃值: (1781)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
Awesome! Awesome! Awesome! Awesome!
19小时前
0
雪    币: 350
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
hark
17小时前
0
雪    币: 39
活跃值: (917)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
6
16小时前
0
雪    币: 570
活跃值: (3995)
能力值: ( LV3,RANK:37 )
在线值:
发帖
回帖
粉丝
13
mark
16小时前
0
雪    币: 236
活跃值: (1925)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
1
14小时前
0
雪    币: 2908
活跃值: (1399)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
厉害
13小时前
0
雪    币: 4712
活跃值: (5287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
感谢分享。
13小时前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
感谢分享
13小时前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
感谢分享
12分钟前
0
游客
登录 | 注册 方可回帖
返回