拆下 flash 芯片以提取神秘设备的固件可能会损坏设备,而直接在电路板上读取芯片也可能失败。[Matthew “wrongbaud” Alt] 转而介绍了如何使用逻辑分析仪,识别、记录并解析常见 W25Q 系列 flash 芯片在启动时执行的 SPI 读取操作。由于该方法仅限于处理器实际读取的数据,因此可能无法获取芯片的全部内容。
Alt 首先介绍 SPI 通信的基础知识,以及如何借助 flash 芯片的数据手册解读信号。随后,他使用 Scapy 处理逻辑分析仪的记录,并将其转换为可导入 binwalk 的镜像文件。Python 工具 Scapy 除了处理网络数据包外,也可以用于处理这类数据。
尽管固件镜像中包含 bootloader 和 Linux kernel,但文件系统分区似乎缺失了。这是因为处理器在读取文件系统之前,切换到了使用两条额外数据线的更快 Quad-SPI 模式。经过额外的记录和处理后,两个镜像通过一条 dd 单行命令合并。Alt 的作品还包括硬件黑客指南和 fault injection 研究。
为何重要
这种方法无需拆下芯片即可进行固件分析,因此既能降低损坏设备的风险,也能让研究人员监测电路板上的实际通信。然而,由于结果反映的并非内存中的全部内容,而只是处理器在启动期间访问的部分,因此所获得镜像的范围从一开始就受到限制。尤其是从 SPI 切换到 Quad-SPI,表明为什么仅记录标准信号可能会产生不完整的输出,也意味着类似研究需要将所使用的数据线纳入考量。这表明,对于硬件研究人员和从事逆向工程的人员而言,该方法本身并不充分;要补全缺失部分,可能还需要额外的记录和处理步骤。