除了createfile和openfile外,是否还有任何Windows API获取文件句柄?

时间:2020-03-05 18:40:12  来源:igfitidea点击:

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

我已经成功地将createfile与MSR的detours库挂钩,但是createfile似乎从未与我感兴趣的文件一起被调用。我也尝试过将openfile与相同的结果挂钩。

我不是经验丰富的Windows / c ++程序员(甚至不是经验丰富的程序员),所以我最初的两个想法是,应用程序在挂接api之前调用了createfile,或者还有一些其他api用于为其创建文件/获取句柄。

编辑:
感谢两个宝贵答复。由于内容丰富,我会赞成编码的意思,但是我没有足够的代表:(

解决方案

回答

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

使用Cand C ++进行游击式文件监视

可以在不触摸CreateFile API的情况下创建文件,但是我可以问一下我们使用的是哪种DLL注入方法吗?如果我们使用的是Windows Hooks之类的东西,则直到目标应用程序初始化之后的某个时候,DLL才会被安装,并且我们会错过对CreateFile的早期调用。而如果我们使用的是DetourCreateProcessWithDll之类的文件,则可以在运行任何应用程序启动代码之前安装CreateFile挂钩。

以我的经验,创建/打开文件的99.9%会导致对CreateFile的调用,包括通过C和C ++库,第三方库等打开的文件。一个典型的日志文件,我对此表示怀疑。

回答

我们可以使用Sysinternal的FileMon。
这是一个出色的监视器,它可以准确告诉我们正在执行哪些与文件相关的系统调用
做了什么参数。

我认为这种方法比挂接API调用要容易得多,并且侵入性要小得多。

回答

来自sysinternals的Process Monitor也可以提供帮助。