如何访问任何USB设备的机密区域?

如何访问任何USB设备的机密区域?,usb,driver,hardware,firmware,block-device,Usb,Driver,Hardware,Firmware,Block Device,我们知道基于“vtable”原则的接口。一旦你有了一个指向一个对象的指针,你就可以把它缩小到一个接口上,新的对象就是同一个对象,但只限于这个接口。我一直认为硬件固件有些相似。例如,对于块设备(HDD或SSD),此接口类似于读取、写入、状态等。因此,驱动程序就是这样一个设备界面的用户 事实证明,任何存储设备都有固件,并且其存储中有一个特殊区域标记为“内部”,用于保存固件。制造商发布允许“闪存”其特定设备的程序,例如将新程序写入其内部空间,隐藏在操作系统中 我的问题是:在软件层面上,他们如何对驱动器

我们知道基于“vtable”原则的接口。一旦你有了一个指向一个对象的指针,你就可以把它缩小到一个接口上,新的对象就是同一个对象,但只限于这个接口。我一直认为硬件固件有些相似。例如,对于块设备(HDD或SSD),此接口类似于读取写入状态等。因此,驱动程序就是这样一个设备界面的用户

事实证明,任何存储设备都有固件,并且其存储中有一个特殊区域标记为“内部”,用于保存固件。制造商发布允许“闪存”其特定设备的程序,例如将新程序写入其内部空间,隐藏在操作系统中

我的问题是:在软件层面上,他们如何对驱动器的“隐藏”区域执行这种读写操作?死掉的“COM端口”有何关联


如果硬盘可以跨所有操作系统工作,为什么固件升级软件只针对Windows发布?在linux的开源世界中,为了更好地理解“调试固件”,我需要阅读什么?

这取决于块设备的确切类型以及它与PC的接口方式。一个非常常见的接口是SATA,当它可以直接与家用PC中的SATA控制器一起使用时,或者可以通过USB-SATA桥接器访问

如果我们以SATA为例,SATA协议中存在一个称为“下载微码”(命令ID 0x92)的特殊命令,该命令仅用于将新固件传输到驱动器控制器

固件通常不存储在“驱动器隐藏区”本身,如您所示-它通常存储在闪存或驱动器控制器PCB或驱动器控制器IC内的类似设备中

此过程中不涉及“死COM端口”

硬盘供应商有时只为Windows发布固件更新工具的原因可能很简单,因为他们的大多数客户使用Windows,而且他们只支持一个平台更便宜

我们知道基于“vtable”原则的接口。一旦你有了一个指向一个对象的指针,你就可以把它缩小到一个接口上,新的对象就是同一个对象,但只限于这个接口。我一直认为硬件固件有点类似。例如,对于块设备(HDD或SSD),此接口类似于读、写、状态和类似接口。所以驱动程序就是这样一个设备接口的用户

不,不是真的。面向对象编程与个人计算机硬件无关,您认为
虚拟
调用与设备驱动程序相关的印象是错误的。他们完全没有关系


事实证明,任何存储设备都有固件,并且在其存储中有一个特殊区域标记为“内部”,用于保存固件。制造商发布允许“闪存”其特定设备的程序,例如,将新程序写入其内部空间,隐藏在操作系统之外

事实并非如此。并非所有存储设备都有固件,而且它们拥有的任何固件(如果有)都不一定存储在可重写闪存上,例如,不可重写的

我的问题是:在软件层面上,他们如何对驱动器的“隐藏”区域执行这种读写操作?死掉的“COM端口”有何关联

如果您指的是现代(2004年后)SATA和NVMe存储设备的固件更新,则可以使用SATA和NVMe的内置命令更新这些设备的固件

这在和等地方都有记录

如果硬盘可以跨所有操作系统工作,为什么固件升级软件只针对Windows发布?在linux的开源世界中,我需要阅读什么才能更好地理解“调试固件”

为什么固件升级软件只针对Windows发布

因为Windows是这类硬件用户使用的主要操作系统。虽然可以使用原始SATA/NVMe命令更新固件,但您仍然需要主机操作系统来运行将发出这些SATA/NVMe命令的程序。假设为Windows的SSD构建固件更新需要花费10万美元,为Linux构建固件更新需要花费10万美元(Linux和Windows都需要花费20万美元)——但是90%的Linux用户也运行Windows——那么为什么要为100%的覆盖率花费20万美元,而你可以为90%的覆盖率花费10万美元,然后再为自己购买法拉利或特斯拉X型P100D呢,指责用户没有从Windows U盘启动升级固件?(旁注:我选择了后者,是的,我真的很喜欢我的特斯拉X型车)

你不能让一个程序在任何计算机平台(Windows、BSD、Linux、macOS、QNX等)上神奇地运行并更新外围设备固件:它总是需要一个可以由主机操作系统执行的程序(你可以说UEFI/EFI是一种平台无关的方法,但实际上UEFI/EFI仍然是它自己的平台)

在linux的开源世界中,我需要阅读什么才能更好地理解“调试固件”

200毫克的Adderall和一份盗版的


…或500mg Dexedrine和。

“任何存储设备都有固件”-这不是真的。20世纪50年代和60年代早期的平板存储设备肯定没有任何固件。同上,20世纪80年代的IBM PC兼容存储设备有单独的控制器卡,这意味着存储设备没有真正的“固件”可言。@Dai哦,也许,我在考虑USB设备。谢谢,澄清了很多,并提供了很好的链接。我会尽量坚持服用200mg