首页
社区
课程
招聘
[原创]windows调试体系初探
发表于: 2025-8-16 02:36 3019

[原创]windows调试体系初探

2025-8-16 02:36
3019


DebugActiveProcess 建立连接  WaitForDebugEvent等待调试事件  事件处理完成后,使用 ContinueDebugEvent 恢复线程执行

调试事件

断点种类:

软件断点:int3 0xcc触发异常

硬件断点:DR寄存器

内存断点:设置页面属性

标志位;常见调试器特征;断点检测;时间检测;异常干扰;花指令等


使用 IsDebuggerPresent 检测调试器
最简单的反调试技术之一是使用 WinAPI IsDebuggerPresent。此函数如果检测到调试器附加到调用进程,则返回 TRUE;如果未检出调试器,则返回 FALSE。

NtQueryInformationProcess 检测 原理: 通过调用 NtQueryInformationProcess 函数,查询进程信息中的 ProcessDebugPort 字段。若该值不为 0,说明进程被调试器附加(调试器会通过该端口与被调试进程通信)

那么像标志位检测,为什么检测这个标志位的值就知道进程有没有被调试,背后的原理是什么?这就需要我们逆向windwos调试相关的函数了。不然只得其形不得其意。

通过DebugActiveProcess函数,建立调试进程和被调试进程的链接

通过创建进程 CreateProcess,参数dwCreationFlags给DEBUG_ONLY_THIS_PROCESS,最终也会调用DebugActiveProcess中的函数






kernelbase.dll中

DbgUiConnectToDbg 创建调试对象

ProcessIdToHandle 获取被调试进程句柄

DbgUiDebugActiveProcess 关联调试进程;发假消息;创建远程线程int3;

NtClose 关闭句柄,DbgUiDebugActiveProcess执行失败则设置错误码;





ntdll.dll中

DbgUiConnectToDbg  创建调试对象

判断有没有句柄,然后进内核创建调试对象

NtCurrentTeb()->DbgSsReserved[1]中存储的是当前线程关联的调试对象句柄

ntoskrnl.exe

ObCreateObject创建调试对象

ExInitializeFastMutex (&DebugObject->Mutex); InitializeListHead (&DebugObject->EventList); KeInitializeEvent (&DebugObject->EventsPresent, NotificationEvent, FALSE);

‌互斥锁 ‌事件链表 ‌事件对象初始化,保证同步操作

ObInsertObject将调试对象插入进程句柄表


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-8-16 02:56 被只会逆一点点编辑 ,原因:
收藏
免费 68
支持
分享
最新回复 (30)
雪    币: 10022
活跃值: (6819)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
学习一下
2025-8-16 09:31
0
雪    币: 8998
活跃值: (3729)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习学习
2025-8-16 13:15
0
雪    币: 379
活跃值: (2696)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习学习
2025-8-16 17:23
0
雪    币: 26
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
11
2025-8-20 15:07
0
雪    币: 208
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
666363
2025-8-20 22:42
0
雪    币: 245
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
2025-8-21 00:03
0
雪    币: 1110
活跃值: (2726)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习学习
2025-8-21 10:32
0
雪    币: 16
活跃值: (2120)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习一下
2025-8-21 16:43
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
WC2
10
dddd
2025-8-22 16:38
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
学习一下
2025-8-22 23:01
0
雪    币: 4767
活跃值: (7635)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
学习一下
2025-8-23 01:46
0
雪    币: 2695
活跃值: (7336)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
谢谢分享
2025-8-23 08:10
0
雪    币: 0
活跃值: (81)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习一下
2025-9-10 17:26
0
雪    币: 9
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
真好,谢谢,学习中
2025-10-12 07:23
0
雪    币: 477
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
你的分享对大家帮助很大,非常感谢!
2025-10-12 08:51
0
雪    币: 3872
活跃值: (4230)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
6
2025-10-12 09:17
0
雪    币: 465
活跃值: (509)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
6
2025-10-12 20:02
0
雪    币: 266
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
学习一下
2025-10-24 16:39
0
雪    币: 14
活跃值: (598)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
谢谢分享
2025-10-26 20:19
0
雪    币: 106
活跃值: (1394)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
mark
2025-10-30 16:33
0
雪    币: 3701
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
感谢楼主分享
2025-11-3 20:37
0
雪    币: 39
活跃值: (812)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
mark
2025-11-7 09:07
0
雪    币: 6786
活跃值: (5746)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
谢谢分享  
2025-11-7 09:35
0
雪    币: 3
活跃值: (1069)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
6666
2025-11-13 14:28
0
游客
登录 | 注册 方可回帖
返回