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

时间:2012-03-30 17:45:52

标签: windows ioctl strace

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

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

4 个答案:

答案 0 :(得分:3)

您是否尝试过OSR的IRPTracker

  

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

最近发现了Rohitab的API Monitor 它已经更新了2年,但它确实可以在我的Win7 x64上运行。它具有非常好的API过滤功能。

答案 3 :(得分:0)

Dr. Memory(http://drmemory.org)工具附带了一个名为drstrace的系统调用跟踪工具,它列出了目标应用程序所做的所有系统调用,包括NtDeviceIoControlFile及其参数:http://drmemory.org/strace_for_windows.html