2

这听起来可能很愚蠢,但我想知道如何执行以下操作。

我创建了一个 .txt 文件。.txt 文件的内容是不带引号的单词“hi”。所以 .txt 文件包含 2 个字符。在十六进制编辑器中打开 .txt 文件时,会看到 2 个十六进制对,即“68”和“69”:

Offset
00000000 68 69 hi

我想做的是以下。我想把“69”十六进制对放在硬盘上一个非常具体的地址。所以基本上我想取一个字节并将它放在硬盘上一个非常特定的地址。

所以“68”应该在地址n和“69”应该在地址n+1000000

现在这是愚蠢的部分,完成此操作后,我希望我的 .txt 文件仍然是 2 个字节大,并且我仍然希望能够在记事本中打开我的 .txt 文件并看到“hi”这个词。我怎样才能做到这一点?

4

2 回答 2

1

没有发生。

没有文件系统允许您为同一扇区上的字节分配字节位置(通常为 512 字节)。

几乎没有文件系统允许您分配未与扇区对齐的字节位置。

大多数文件系统使用更大尺寸的分配单元(通常为 4096 字节)。

于 2010-08-16T18:50:54.217 回答
1

您要求做的几乎与现代操作系统和文件系统试图处理的所有事情背道而驰。磁盘上数据的字面位置和布局被有意抽象掉。

不知何故,可能有一种方法可以对文件系统进行低级别访问。从理论上讲,您可以将文件的第一个字节放在一个扇区中,然后将文件的第二个字节放在不同的部分中。但这假设文件系统支持第一个扇区被部分填充而文件没有在那里结束。这也假设没有实用程序或类似的东西出现并将这些数据压缩在一起。

一般来说,没有理由一开始就想做这样的事情。我能想象的唯一原因是你想在这两个字节之间隐藏数据。就像将 1000000 字节(或多少字节)写入文字磁盘一样,但随后让操作系统相信文件中仅存在第一个和最后一个字节。因此,任何通过正常方式查看文件的人将永远不会看到中间的 999998 字节。据推测,只有您专门编写的程序才能知道如何处理它们。

如果这真的是你的目标,那么可能有也可能没有办法做到这一点。在这方面,我没有任何其他具体建议。但是,您可能想研究TrueCrypt之类的东西,以及它如何能够在磁盘上创建隐藏的加密分区。

于 2010-08-16T20:20:10.070 回答