Windows调试器工作原理深度解析
1. 用户模式调试
用户模式调试器允许我们检查目标程序的内存,并控制其执行,如设置断点和单步执行代码。
1.1 架构概述
Windows操作系统为用户模式调试设计了一套架构,基于以下原则:
- 当被调试进程中发生重要调试事件(如加载新模块、异常)时,操作系统代表目标进程生成消息通知并发送给调试器进程,调试器可选择处理或忽略这些通知。在此期间,目标进程会阻塞,直到调试器响应完毕才会继续执行。
- 原生调试器进程需有专门线程接收和响应目标进程生成的调试事件。
- 两个用户模式程序间的进程间通信基于调试端口内核对象(由目标进程拥有),目标进程将调试事件通知排队,等待调试器处理。
这个通用的进程间通信模型足以满足用户模式调试会话中对目标的控制需求,如下图所示:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(Target Process):::process -->|Send debug event and wait| B(Debug Port Object):::process
B -->|Process incoming debug notifications| C(Dedicated Server Thread):::process
C -->|Respond to events| A
D(Debugger Process):::process --&g
超级会员免费看
订阅专栏 解锁全文
828

被折叠的 条评论
为什么被折叠?



