5

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

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

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

编辑:感谢您的两个伟大的答复。我会赞成codingthewheel的回复,因为它提供了丰富的信息,但我没有足够的代表:(

4

3 回答 3

8

您可以使用 Sysinternal 的FileMon。它是一个出色的监视器,可以准确地告诉您正在进行哪些与文件相关的系统调用以及参数是什么。

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

于 2008-08-17T19:26:56.637 回答
6

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

使用 C# 和 C++ 进行游击式文件监控

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

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

于 2008-08-17T19:04:47.227 回答
3

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

于 2008-09-05T08:39:16.857 回答