如何在windows上记录程序的DeviceIoControl调用

如何在windows上记录程序的DeviceIoControl调用,windows,ioctl,strace,Windows,Ioctl,Strace,我需要捕获应用程序的DeviceIoControl()系统调用。在linux上,strace可用于分析所有ioctl调用。windows上有类似的功能吗 MSDN网站推荐一个名为“进程监视器”的程序来分析可执行文件的实时活动。但是,“进程监视器”没有显示任何关于DeviceIoControl调用的信息。您尝试过OSR吗 IrpTracker允许您监视系统上的所有I/O请求数据包(IRP),无需使用任何筛选器驱动程序,也无需引用任何设备对象,使PnP系统完全不受干扰。除了能够看到IRP取下驱动程序

我需要捕获应用程序的DeviceIoControl()系统调用。在linux上,strace可用于分析所有ioctl调用。windows上有类似的功能吗

MSDN网站推荐一个名为“进程监视器”的程序来分析可执行文件的实时活动。但是,“进程监视器”没有显示任何关于DeviceIoControl调用的信息。

您尝试过OSR吗

IrpTracker允许您监视系统上的所有I/O请求数据包(IRP),无需使用任何筛选器驱动程序,也无需引用任何设备对象,使PnP系统完全不受干扰。除了能够看到IRP取下驱动程序堆栈的路径及其最终完成状态外,还可以使用详细视图查看IRP静态部分的全部内容以及当前和以前堆栈位置的解释视图


要捕获DeviceIoControl()函数,可以使用API挂钩。我的公司提供了一个具有高级界面的钩子引擎。你不需要知道很多关于挂钩的知识,它可以自由使用(只需显示一个对话框,上面写着未注册版本)。它包括一个带有源代码的钩子控制台。

Dr.Memory()工具附带一个名为drstrace的系统调用跟踪工具,该工具列出了目标应用程序进行的所有系统调用,包括NtDeviceIoControlFile及其参数:

最近发现的Rohitab
它已经两年没有更新了,但在我的Win7 x64上确实可以使用。它有非常好的API过滤功能。

IRPTracker只支持32位Windows 7及更早版本,而且似乎永远不会改变。有一个类似的实用程序叫做IRPMon,但我还没有试过。