0

我正在尝试创建一个程序,它将一系列 10-30 个字母/数字以原始格式写入磁盘(而不是操作系统将读取的文件)。也许为了让我的尝试更清楚,如果您要在十六进制编辑器中打开磁盘,您会看到 10-30 个字母/数字,但 Windows 资源管理器等文件管理器不会看到它(因为数据不是文件) .

我的目标是能够用一系列字符“签名”磁盘,并能够在我的程序中读取和写入该“签名”。我理解 NTFS 像其他文件系统一样使用 NTFS 标志对其分区进行签名,并且我必须小心不要将我的签名写入任何这些关键部分。

C++/C 中是否有任何库可以帮助我在低级别写入磁盘,我如何知道开始将签名写入的安全扇区?为了缩小范围,它只需要能够写入 NTFS、FAT、FAT32、FAT16 和 exFAT 文件系统并在 Windows 上运行。非常感谢任何链接或参考!

编辑:经过一些研究,USB 驱动器只允许 1 个分区,而没有应用会为用户带来更多问题的黑客技巧。不幸的是,这排除了“分区想法”。

4

3 回答 3

2

首先,正如评论者所说,你应该看看你为什么要这样做,看看这是否真的是一个好主意。大多数试图绕过用户使用他/她的计算机的正常 UI 的应用程序在各种方面都是“坏的”。

也就是说,您可以尝试找到一个众所周知的文件,该文件将始终在系统上,并且磁盘的块大小有一些松弛,然后写入松弛。我认为大多数文件系统不会关心松弛中的额外数据,如果文件恰好被重新定位,它甚至可能会被复制(在磁盘级别复制整个块更有效)。

只是一个想法; 不知道它有多可行,但似乎它在理论上可行。

于 2012-03-12T05:36:44.957 回答
1

尽管我认为这通常是一个非常糟糕的主意,但显而易见的方法是将集群标记为“坏”,然后将其用于您自己的目的。

问题:

  1. 将其标记为坏是不平凡的(在 NTFS 上,坏集群存储在一个名为 的文件中$BadClus,但用户代码无法访问它(我什至不确定它是否可以被设备驱动程序访问)。
  2. 有各种程序可以扫描(并尝试修复)坏簇/扇区。由于我们甚至不相信这个真的很糟糕,所以几乎所有有效的这些都会发现它很好并重新投入使用。
  3. 无论如何,人们想到做这样的事情的大多数原因(比如将特定的软件安装绑定到特定的计算机)都是非常愚蠢的。
  4. 您必须扫描所有“坏”扇区以查看其中是否包含您的签名。
于 2012-03-12T05:17:23.390 回答
0

这是非常危险的,然而,零填充程序做同样的事情,所以你可以谷歌如何用 C++ 中的零擦除你的硬盘驱动器。

困难的部分是找到一个你知道的地方没有被使用,也不会被使用。

于 2012-03-12T05:06:40.007 回答