0

每当我将闪存驱动器插入任何计算机时,是否会执行前 512 个字节?如果是(应该是这种情况),那么我想如果我提取并反汇编 MBR 并放入指向存储的可执行文件(在闪存驱动器上)的内存位置的引用,即使该可执行文件也会在其执行时执行插电脑..?

我怎么能那样做?我的意思是,只做一个简单的call <address>操作是不行的。我还想更多地了解闪存驱动器的 MBR,因为它们与引导操作系统的 MBR 不同。谷歌搜索它根本没有显示任何有用的东西。所以我想问问社区,是否有人以前做过这样的事情。

4

1 回答 1

2
  1. 某些操作系统中有“自动运行”功能,但已弃用。

闪存驱动器基于多层传统技术,以避免需要驱动程序。
在最低级别,有 USB 数据包(请参阅大容量存储设备规范,根据 Pascal Cuoq)
每个 USB 事务都是一个 SCSI 命令/响应对。
操作系统将闪存驱动器视为 SCSI 磁盘(例如,您会在 Linux 中看到 /dev/sdX)。

由于闪存驱动器看起来是一个普通的 SCSI 磁盘,它通常有一个 MBR/分区表。但是,大多数操作系统都支持“超级软盘”模式,在这种情况下,磁盘以 FAT 引导扇区开始。一些较小的闪存驱动器,或使用旧实用程序格式化的闪存驱动器,可能在该配置中。

您可以使用 Microsoft 的 DSKPROBE 实用程序(使用 PhysicalDrive 选项)或使用 .\PhysicalDriveX 的“dd.exe”(其中 X 是一个数字 ..通常为 2,取决于硬盘驱动器的数量)在 Windows 上以闪存驱动器 MBR 为例你有)

在正确配置的计算机上,插入设备时无法执行代码。
即使“自动运行”功能默认开启,您也需要使用看起来像 CDROM 的设备。
(SCSI 命令集允许设备判断它是 CD 还是 HD,并且闪存驱动器固件很容易撒谎)

于 2011-09-05T22:07:30.887 回答