我的目标是确定何时执行命令,确切地说是读取和写入哪些文件。 在Linux中,我可以使用ptrace来做到这一点(工作,类似于strace),在freebsd和MacOS上,我可以用ktrace系统命令来做到这一点。 你会用什么来获得这个信息在Windows中?
到目前为止,我的研究表明,我要么使用debugging器接口(在许多方面类似于ptrace),要么可能使用ETW。 第三种方法是设置一个DLL来拦截系统调用。 不幸的是,我没有经验猜测这些方法将会如何挑战。
有什么build议么?
正如你所建议的那样,使用DLL注入来解决这个问题是一个非常简单的任务。
这是一个相当不错的应用程序的文章: http : //www.codeproject.com/Articles/2082/API-hooking-revealed
我相信你可以找到更多有关这个问题的文章。
但是,您可能需要使用C ++来实现这样的实用程序。 顺便说一句,程序可以禁用DLL注入,例如我没有能够在试用版的Photoshop上使用这种方法。
因此,在开始编写自己的代码之前,您可能需要检查是否可以使用现有的解决方案注入dll。
祝你好运。
不幸的是,似乎没有简单的方法来拦截Windows上的文件级操作。
这里有一些提示:
如果你想更好地理解,而不是手动做的惊吓,Windows截取文件IO的方式是使用文件系统过滤器驱动程序 。 实际上,Windows系统中嵌入了一个FilterManager ,可以将所有的文件系统调用转发给微过滤器 。
为了构建它,与FilterManager提供的系统接口,你只是(…)来编写和安装实际过滤的微过滤器 – 再次提防从未测试… …
请看下面的文章:
http://www.codeproject.com/Articles/950/CDirectoryChangeWatcher-ReadDirectoryChangesW-all
这是一个非常古老的,但运行方式来观看目录的变化。
微软拥有一大堆名为SysInternals的工具。 有一个名为进程监视器的程序,它将显示特定进程的所有文件访问。 这很可能是你想要的。
检查这个问题的连接你的问题…这可能会帮助你是否有像Windows中的Linux ptrace系统调用?
另外,如果你正在运行较低版本的XP,你应该检查这个链接了.. https://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
让我知道如果它没有帮助
此外,我希望你能检查出这个人.. 监视一个进程在Windows中完成的某些系统调用