深入理解 ETW:从提供者注册到事件生成
1. 枚举 ETW 会话
可以使用 Microsoft Logman 控制台工具( %SystemRoot%\System32\logman.exe )来枚举活动的 ETW 会话,具体操作是在命令行中使用 -ets 参数。
2. ETW 提供者概述
提供者是产生事件的组件,包含提供者的应用程序具备事件跟踪检测功能。ETW 支持多种类型的提供者,它们共享相似的编程模型,但在事件编码方式上有所不同。提供者在生成事件之前,必须先向 ETW 进行注册。控制器应用程序需要启用提供者,并将其与 ETW 会话关联,才能接收来自该提供者的事件。若没有会话启用某个提供者,该提供者将不会生成任何事件。通常,启用的提供者会生成事件,禁用的则不会。
3. 提供者注册
不同类型的提供者有各自的注册 API。例如,基于清单的提供者在用户模式下使用 EventRegister API 进行注册,在内核模式下使用 EtwRegister 。所有类型的提供者最终都会调用内部的 EtwpRegisterProvider 函数来完成实际的注册过程,该函数在 NT 内核和 NTDLL 中实现。
3.1 注册流程
- 权限检查 :对于用户模式的提供者注册,NT 内核会对调用进程的令牌进行访问检查,要求具备
TRACELOG_REGISTER_GUIDS访问权限。若
超级会员免费看
订阅专栏 解锁全文
3348

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



