我有一个程序可以检查很多本地文件。当程序运行时,我希望它像往常一样使用本地文件,但在加载程序期间,我希望它检查来自其他位置的文件的详细信息(我编辑了使它们更长的文件,我希望它对原始文件进行检查,但执行修改后的文件。
有什么办法可以欺骗程序以为它正在访问文件系统,但实际上将它指向另一个位置?
我有一个程序可以检查很多本地文件。当程序运行时,我希望它像往常一样使用本地文件,但在加载程序期间,我希望它检查来自其他位置的文件的详细信息(我编辑了使它们更长的文件,我希望它对原始文件进行检查,但执行修改后的文件。
有什么办法可以欺骗程序以为它正在访问文件系统,但实际上将它指向另一个位置?
我认为最好的方法是将相关函数调用重定向到“欺骗”文件系统的虚拟函数。您可能对修改可执行文件的导入表感兴趣。
user578368 的答案是正确的,但更具体地说:(假设您使用的是 Windows)您需要捕获/绕过 CreateFileA 和 CreateFileW 函数对。它们是程序用来从 Windows 请求文件的文件,因此您可以在 Windows 获取文件之前更改文件名。
您可以使用 user578368 提供的链接来修改导入表,也可以使用挂钩库即时完成。总结这些库的表格:函数挂钩库的比较
在工作中,我们将 MSDetours 用于完全相同的目的。