应用程序可以伪装成文件或文件夹吗

Can an application pretend to be a file or folder?

本文关键字:文件夹 文件 伪装 应用程序      更新时间:2023-10-16

我一直在考虑集中我的电脑游戏保存,以使备份和恢复更容易,并通过dropbox将它们放在云上,但在很多地方,这会让它变得非常困难。我注意到Windows7和Vista现在支持符号链接,所以我一直在玩这个,但我想知道以下内容:

应用程序(vb.net或C++)是否可能伪造文件或文件夹(代码示例或指向正确方向的点)?

例如,应用程序A(类似于《暗黑破坏神III》或《文明V》的游戏)试图从文件A(游戏保存)读取或从文件A读取权限,应用程序B(保存库)检测到该读取/写入请求,并通过自身将该请求传送到文件B(另一位置的实际游戏保存)上。应用程序A不会被更改,并且正常处理该文件。

注意:我意识到有很多简单的方法可以预先完成相同的任务,比如监控应用程序A的使用情况,或者定期检查文件A,如果自上次检查以来文件A发生了更改,则进行复制等,但所有这些方法都有回缩,而且对使其工作的兴趣不如可能的话。

通过文件系统过滤器驱动程序完全可以做到这一点。有关这些信息,请查看此处:

http://msdn.microsoft.com/en-us/windows/hardware/gg462968

过滤器驱动程序可以挂接到CreateFile操作中,并根据需要将创建重定向到其他位置,但与普通应用程序相比,它们更难编写。它们在内核模式下运行,必须遵守驱动程序的限制。

您可以像控制面板那样"伪造"特殊文件夹,但我不认为您可以(以简单的方式)创建任何可访问/可写的内容。不过我可能错了。我也有过同样的想法(作为一些公司产品的兼容性步骤),但找不到任何支持简单方法的东西。在Unix系统上做这件事似乎更容易(但这显然是没有选择的)。此外,我不希望有任何好的或简单的解决方案

我现在唯一能想到的方法是劫持相应的API调用(例如FileOpen),以重新路由/操纵它们(类似于root工具包的做法),但我不会说这是个好主意,因为它可能会被punkbuster或防病毒解决方案检测为恶意软件或作弊。

是或否取决于(使用您的术语)应用程序A所使用的抽象级别。

如果应用程序A正在执行CreateFilewto启动访问并传递固定的文件系统路径,那么应用程序B将需要模拟文件系统并在内核中这样做。

另一方面,如果应用程序A使用RESTful URL来使用HTTP,那么HTTP服务器可以通过动态创建内容来回答来自文件的所有请求。

因此,这个问题只能通过了解应用程序A的详细信息来具体回答。