除了createfile和openfile之外,还有任何windows apis来获取文件句柄吗?

时间:2008-08-17 18:27:08

标签: c++ windows api logfiles

我正在尝试窥探应用程序正在写入的日志文件。

我已经成功地将createfile与来自MSR的detours库挂钩,但似乎永远不会使用我感兴趣的文件调用createfile。我也尝试用相同的结果挂钩openfile。

我不是一位经验丰富的windows / c ++程序员(甚至是经验丰富的程序员),所以我最初的两个想法是应用程序在挂钩api之前调用createfile,或者是否有其他api用于创建文件/获取为他们处理。

编辑: 感谢您的两个好评。我会upwote编写thewheel的回复,因为它提供了信息,但我没有足够的代表:(

3 个答案:

答案 0 :(得分:8)

您可以使用Sysinternal的FileMon。 它是一个出色的监视器,可以准确地告诉您与文件相关的系统调用 制作了什么参数。

我认为这种方法比挂钩API调用更容易,而且更少侵入。

答案 1 :(得分:6)

这是一个可能有用的链接:

Guerilla-Style File Monitoring with C# and C++

可以在不触及CreateFile API的情况下创建文件,但是我可以问您正在使用的DLL注入方法吗?如果您使用的是Windows Hooks之类的东西,那么在目标应用程序初始化之后的某个时间内,您的DLL将不会被安装,并且您将错过早期调用CreateFile的时间。然而,如果您正在使用DetourCreateProcessWithDll之类的东西,则可以在任何应用程序启动代码运行之前安装CreateFile钩子。

根据我的经验,99.9%的已创建/已打开文件会导致调用CreateFile,包括通过C和C ++库,第三方库等打开的文件。也许有一些未记录的DDK函数无法通过CreateFile进行路由,但对于典型的日志文件,我对此表示怀疑。

答案 2 :(得分:3)

来自sysinternals的

Process Monitor也可以提供帮助。