WriteFile钩子不会捕获写入文件操作

时间:2012-06-16 12:28:51

标签: c++ winapi hook detours writefile

我有一个应用程序,它会向文件写入一些文本数据。 我想要做的是挂钩写作过程。 我迷上了MS Detours,CreateFile,WriteFile和WriteFileEx函数。 CreateFile正确捕获这些文本文件的创建/打开,但WriteFile的钩子却没有。它捕获了许多其他东西,但不是这些。钩子工作正常。我检查了一下。

Process Monitor也将这些写操作显示为WriteFile操作(adv名称为IRP_MJ_WRITE和FASTIO_WRITE),就像我自己写的东西一样(我的操作挂钩正常工作)

这里发生了什么?有没有其他方法可以写一些文件而不是WriteFile?

2 个答案:

答案 0 :(得分:2)

在Windows中,您可以在调用 CreateFile 之后使用 CreateFileMapping MapViewOfFile 函数对内存映射文件。完成此操作后,您可以使用 memcpy 等任何内存函数来写入文件。对于小文本文件,Windows默认执行此操作,这可能是您的情况。

答案 1 :(得分:2)

它不是Microsoft Detours解决方案,但您可以尝试使用我们的Deviare挂钩控制台来查看是否在那里调用这些函数。它是用C#编写的,控制台的源代码包含在发行版中。移植到C ++非常容易,您可以自由使用它(只有在加载Deviare组件时才会出现闪烁)。可在此处下载http://www.nektra.com/products/deviare-api-hook-windows/