每当我将闪存驱动器插入任何计算机时,是否会执行前512个字节?如果是(应该是这种情况),那么我想如果我提取并反汇编MBR并放入一个指向存储可执行文件的内存位置的引用(在闪存驱动器上),即使可执行文件将< / strong>只要插上电脑就会被执行..?
我怎么能这样做?我的意思是,只做一个简单的call <address>
就不会这样做。我也想知道更多关于闪存驱动器的MBR,因为它们与那些引导操作系统的MBR不同。谷歌搜索它并没有显示任何有用的东西。所以我想问社区,如果有人之前做过这样的事情。
答案 0 :(得分:2)
闪存驱动器基于传统技术层,以避免对驱动程序的需求
在最低级别,有USB数据包(参见Mass Pas Device规范,根据Pascal Cuoq)
每个USB事务都是SCSI命令/响应对
操作系统将闪存驱动器视为SCSI磁盘(例如,您将在Linux中看到/ dev / sdX)。
由于闪存驱动器似乎是普通的SCSI磁盘,因此它通常具有MBR /分区表。 但是,大多数操作系统都支持“超级软盘”模式,在这种情况下,磁盘以FAT引导程序启动。一些较小的闪存驱动器或使用旧实用程序格式化的闪存驱动器可能处于该配置中。
您可以在Windows上使用DSKPROBE实用程序(使用PhysicalDrive选项)或使用。\ PhysicalDriveX(其中X是数字...典型地为2,基于如何使用你有很多硬盘)
在正确配置的计算机上,插入设备时无法执行代码 即使“自动运行”功能默认开启,您也需要使用看似CDROM的设备 (SCSI命令集允许设备说出它是CD还是HD,闪存驱动器固件很容易说谎)