将原始数据“签名”写入磁盘而不破坏文件系统

时间:2012-03-12 05:03:29

标签: c++ ntfs disk raw-data

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

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

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

编辑:经过一些研究,USB驱动器只允许1个分区而不应用会给用户带来进一步问题的黑客技巧。不幸的是,这排除了“分区理念”。

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

问题:

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

答案 2 :(得分:0)

这是非常危险的,但是,零填充程序会执行相同的操作,因此您可以谷歌如何使用C ++中的零来擦除硬盘驱动器。

困难的部分是找到一个你知道未使用但不会被使用的地方。