我正在尝试创建一个程序,它将以原始格式将一系列10-30个字母/数字写入磁盘(而不是操作系统将读取的文件)。也许为了使我的尝试更清晰,如果您在十六进制编辑器中打开磁盘,您将看到10-30个字母/数字,但文件管理器(如Windows资源管理器)将看不到它(因为数据不是文件)。
我的目标是能够使用一系列字符对磁盘进行“签名”,并且能够在我的程序中读写“签名”。我知道NTFS和其他文件系统一样,使用NTFS标记对其分区进行签名,我必须小心不要将签名写入任何关键部分。
在C++/C中有没有库可以帮助我在低级写入磁盘,以及我如何知道可以开始向其写入签名的安全扇区?要缩小范围,它只需要能够写入NTFS、FAT、FAT32、FAT16和exFAT文件系统并在Windows上运行即可。任何链接或参考资料都是非常感谢的!
编辑:经过一些研究后,USB驱动器只允许一个分区,而不会应用黑客技巧,因为黑客技巧会给用户带来更多问题。不幸的是,这排除了“分区思想”。
发布于 2012-03-12 13:36:45
首先,正如评论者所说,你应该看看为什么要这样做,看看这是否真的是一个好主意。大多数试图绕过用户使用计算机的正常用户界面的应用程序在不同方面都是“糟糕的”。
也就是说,您可以尝试查找一个众所周知的文件,该文件将始终位于系统中,并且在磁盘的块大小方面有一些松弛,并写入到松弛。我不认为大多数文件系统会关心冗余中的额外数据,如果文件碰巧被重新定位,它甚至可能会被复制(在磁盘级复制整个块更有效)。
这只是一个想法;不知道它有多可行,但在理论上似乎是可行的。
发布于 2012-03-12 13:17:23
虽然我认为这通常是一个相当糟糕的想法,但最明显的方法是将一个集群标记为“坏”,然后将其用于您自己的目的。
与此相关的问题:
$BadClus的文件中,但用户代码无法访问它(我甚至不确定设备驱动程序是否也能访问它)。发布于 2012-03-12 13:06:40
这是非常危险的,然而,填零程序做了同样的事情,所以你可以谷歌如何在C++中用零来擦除硬盘。
困难的部分是找到一个你知道的未被使用和不会被使用的地方。
https://stackoverflow.com/questions/9661998
复制相似问题