我需要捕获应用程序的 DeviceIoControl() 系统调用。在 linux 上,可以使用 strace 来分析所有 ioctl 调用。windows上有类似的功能吗?
MSDN 网站推荐了一个名为“Process Monitor”的程序来分析可执行文件的实时活动。但是,“进程监视器”没有显示任何有关 DeviceIoControl 调用的信息。
你试过 OSR 的IRPTracker吗?
IrpTracker 允许您监视系统上的所有 I/O 请求数据包 (IRP),而无需使用任何过滤器驱动程序,也无需引用任何设备对象,从而使 PnP 系统完全不受干扰。除了能够查看 IRP 删除驱动程序堆栈的路径及其最终完成状态之外,还提供了一个详细视图,可让您查看 IRP 静态部分的全部内容以及当前和以前的解释视图堆栈位置。
要捕获 DeviceIoControl() 函数,您可以使用 API 挂钩。我公司提供Deviare,一个具有高级接口的钩子引擎。您不需要了解很多关于挂钩的知识,它可以自由使用(只需显示一个对话框,说明未注册版本)。它包括一个带有源代码的钩子控制台。
Dr. Memory ( http://drmemory.org ) 工具带有一个名为 drstrace 的系统调用跟踪工具,它列出了目标应用程序发出的所有系统调用,包括 NtDeviceIoControlFile,以及它们的参数:http ://drmemory.org/ strace_for_windows.html
最近发现 Rohitab 的API Monitor 2 年没更新了,但是在我的 Win7 x64 上确实可以用。它具有非常好的 API 过滤功能。