2

简短版本:有没有办法“拦截”Windows(XP 或 7)文件系统调用以打开文件并用不同的文件名替换所述调用?

长版:我正在尝试帮助客户从 HDD 损坏中恢复。有问题的计算机位于一个信息亭中,该信息亭仅结合网络摄像头播放两个 Flash 文件。它由 MDM Zinc 的已编译 .exe 控制。我有两个 Flash 文件和一个 .exe 副本。

问题是,只有一个 Flash 文件打开。在敲了很多头之后,我终于通过 Systernals Process Monitor 看到了正在发生的事情。两个 .flv 文件都在同一个文件夹中。我可以在 Process Mon 中非常清楚地看到 .exe 将工作的称为 c:\somedirectory\anotherdirectory\file1.flv。不工作的虽然显然有一个错字,因为它在路径中有两个并排的反斜杠:c:\somedirectory\\anotherdirectory\file2.flv

我被告知这是唯一可用的 .exe 版本,并且创建它的公司已经停业,所以我将得到的就是我所拥有的。如果它确实是一个错字,我无法想象它是如何工作的。我不得不认为那里有一个不同的版本。当然,如果它确实是 .exe 中的拼写错误,那么最糟糕的字符可能是另一个 \,因为它在目录或文件名中是无效的,我不能简单地将有问题的文件移动到新的小路。(今天发现您实际上可以在 Windows 中创建一个看似空白名称(ALT-255)的目录,但这是一个没有用的长镜头)。

我的编程技能不是特别强,但是今天的研究让我认为微过滤器或 API 挂钩可能是一个答案?我试过反编译 .exe 并在 HEX 编辑器中打开它,不幸的是,有问题的路径似乎不是一个可以随时编辑的字符串。如果其中任何一个是有效的选择,我真的很感激朝着正确的方向(努力)推动。如果您能想到我可能会尝试的其他任何方法,那么我几乎没有想法。

感谢您的时间!

4

1 回答 1

1

您应该能够使用EasyHook库来完成此操作。http://www.codeproject.com/Articles/27637/EasyHook-The-reinvention-of-Windows-API-hooking上关于 EasyHook 的文章具体包含了如何覆盖的示例,CreateFile.NET 框架使用的方法打开一个文件。

于 2013-07-02T04:41:44.910 回答