【发布时间】:2012-03-14 23:54:02
【问题描述】:
我试图以某种方式记录(以编程方式或记录到日志文件)在给定时间跨度内选定数量的进程调用的每个系统调用。使用Is there something like linux ptrace syscall in Windows? 的答案,我已经能够正确地使用 ETW 来跟踪所有被调用到 etl 文件中的系统调用,然后我可以使用 tracerpt 将其转换为 XML 文件。然而,查看 XML 文件和其他可用格式,我发现了两个主要问题:
系统调用是根据调用的内存地址给出的,但我似乎找不到任何将这些地址转换为名称的好方法。作为参考,示例系统调用地址为 0xFFFFF80002AC22BC。
所有进程 ID 都设置为 0xFFFFFFFF,但似乎系统调用正在记录所有进程,而不仅仅是启动跟踪的进程。我应该如何确定哪个进程进行了哪个系统调用,或者至少过滤到我要跟踪的单个或选定数量的进程?
是否有人对上述问题有任何解决方案,或者更好的是,一些示例代码可能采用 tracerpt 可以输出的这些日志文件格式之一并将其转换为人类可读和可用的格式?
【问题讨论】:
标签: windows system-calls