内存中的虚拟文件

时间:2012-09-05 07:27:15

标签: c console win32ole

我正在为现有程序(普通c控制台应用程序)添加加密功能。 它需要很少的文件作为输入参数,我的任务是使这些文件(敏感数据)安全。

我现在所做的是首先加密文件(使用外部应用程序进行简单的XOR),然后将其解密回程序内,现有程序处理文件。然后,在一切成功之后,我将这些文件加密(所有内容都存储在本地硬盘上)。

但是,安全性存在漏洞,因为所有“打开”文件都存储在硬盘上。如果程序在中间某处失败,那么这些文件将不会被解密。

我的问题是现有程序将FILE变量作为输入并直接使用这些文件。这不是我的程序,所以我无权修改它。

我需要的是将文件写入内存而不是硬盘。 我知道Linux中有一些库可以实现这一点,但是我在win中开发了它。

1 个答案:

答案 0 :(得分:0)

FILE数据类型用于获取指向要打开的文件的文件指针,因此您的FILE *变量已经在内存中。如果你想要整个文件在内存中,那么你必须分配一个与文件大小相同的缓冲区,并在内存中读取整个文件。

在Stackoverflow上,您可以找到有关freadfwritefseek等的更多示例。

编辑:

如果你想操作内存中的文件,但是使用现有的stdio.h接口(fopen,fread,fwrite等),你需要一个ramdrive。 Here你可以在Windows上找到一些免费的驱动程序。请记住,您必须将文件移动到 ramdrive中来处理它们,并在完成后将它们移动到外部 ramdrive,否则您的所有更改都将丢失。