[英]In Windows, how can I trace in C which files a child process reads and writes?
正如您所建议的,这是一个相当简单的任务,可以通过 DLL 注入的 API 挂钩来解决。
这是一篇关于应用程序的相当不错的文章: API hooking 揭示
我相信你可以找到更多关于这个问题的最新文章。
但是,您可能需要使用 C++ 来实现这样的实用程序。 顺便说一下,程序可以禁用 DLL 注入。 例如,我无法在Photoshop的试用版上使用这种方法。
因此,在开始编写自己的解决方案之前,您可能需要检查是否可以使用现有解决方案在所需的进程中注入 DLL 文件。
不幸的是,似乎没有简单的方法来拦截 Windows 上的文件级操作。
这里有一些提示:
如果您想更好地理解并且不害怕手动完成,Windows 拦截文件 I/O 的方法是使用文件系统过滤器驱动程序。 实际上,Windows 系统中嵌入了一个FilterManager ,可以将所有文件系统调用转发给minifilters 。
要构建它,与系统的接口由 FilterManager 提供,您只需 (...) 编写代码并安装执行实际过滤的微过滤器- 再次注意从未测试过...
请查看文章CDirectoryChangeWatcher - ReadDirectoryChangesW all wrap up 。
这是一种非常古老但正在运行的监视目录更改的方法。
微软拥有一系列名为Sysinternals的工具。 有一个名为Process Monitor的程序,它将向您显示特定进程的所有文件访问。 这很可能是您想要的。
检查这个特定的堆栈溢出问题以解决您的问题...这可能对您有所帮助: Windows 中是否有类似 Linux ptrace 系统调用的东西?
此外,如果您运行的是Windows XP等较低版本,那么您应该查看Process Monitor 。
另外,我想让你检查一下...... 监视由 Windows 中的进程完成的某些系统调用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.