我正在读神奇的中国驱动器。如何实现?该帖子讨论了“循环模式”,评论建议使用不同的控制器来欺骗操作系统。
我去买了一个这样的设备,试了一下,它像广告上说的那样工作(满了的时候会覆盖数据),但是当我格式化它的时候,它开始显示它的“真实”容量。
这是如何实现的?
答案1
FAT32有一个包含可用空间的主表。您可以对该主表进行十六进制编辑以显示任意数量的可用空间。我已经有一张 3.7 GB 大小的软盘很久了。
答案2
硬件没有被修改——文件表只是被修改以欺骗操作系统。在格式化过程中,文件表被擦除,因此恢复了真正的容量读数。
如果您去一个没有信誉的卖家那里,您在中国很容易就会买到这种廉价的假闪存驱动器甚至硬盘。
答案3
在看到您的消息之前,我确信这是一个不同的控制器 - 使用经过修改的控制器,您可以向操作系统传达任何您想要的信息。但考虑到格式会修改此行为,这意味着文件系统级别也发生了某种欺骗。这提出了两个选项:
这是控制器的修改,格式化后根本无法工作,因为它依赖于文件系统的修改(在我看来这仍然更有可能)。
还有另一种无需修改硬件的方法,例如通过修改空闲块链接列表使其变为循环的(我不太熟悉 FAT32 的具体细节,无法确定这是否可行 - 如果没有其他人先这样做,可能需要几天时间才能检查...)。
编辑:假设使用的是 FAT32 是天真的,更可能的情况是使用了另一种文件系统,这种文件系统无意中允许了这种循环的可用空间管理技巧(只要该文件系统也受操作系统支持 - 它对用户来说几乎是不可见的)。这使得查看这样的设备变得更加有趣...
答案4
非常简单,
闪存芯片控制器包含一些设置。产品 ID、供应商 ID 以及闪存芯片的数量和大小。
通过使用带有小芯片的旧设备,用错误数量的闪存芯片覆盖固件,总驱动器容量将大于已安装的闪存数量。
因为地址线的数量没有改变,所以芯片总是会被写入。例如,首先写入 128 MB,然后选择下一个芯片,然后再写入 128 MB。
因为只有一个芯片,选择线没有接上,第二个闪存芯片的数据覆盖了第一个芯片的数据。
由于控制器会将所有芯片(包括未连接到操作系统的芯片)的大小报告给操作系统,因此操作系统会很乐意将其格式化为错误的尺寸。