【发布时间】:2021-07-07 06:38:40
【问题描述】:
我有一个固件映像。在使用 binwalk 命令时,我知道它是一个 cramfs 文件系统。我已经使用 binwalk 提取了文件系统。如何找出这个文件系统的架构(例如 arm、x86、mips、...)以便在 QEMU 上进行仿真?
【问题讨论】:
我有一个固件映像。在使用 binwalk 命令时,我知道它是一个 cramfs 文件系统。我已经使用 binwalk 提取了文件系统。如何找出这个文件系统的架构(例如 arm、x86、mips、...)以便在 QEMU 上进行仿真?
【问题讨论】:
如果您已成功提取文件系统内容,您应该能够使用 Linux file 或 objdump 命令来确定可执行文件编译的架构。
但是,请注意,“CPU 架构匹配”不足以在 QEMU 上模拟完整的固件映像(即包括启动代码和内核)。您需要知道固件运行的确切硬件,因为它期望在具有特定硬件地址和特定功能的设备(串行端口、定时器、中断控制器等)的系统上运行。除非 QEMU 模型与这些匹配,否则即使 CPU 类型匹配,固件也不会在引导中走得太远。而且 QEMU 可能没有任何特定嵌入式设备的模型。
您可以在 QEMU 上运行用户空间文件系统,并使用为 QEMU 支持的机器类型构建的内核,但这仅适用于用户空间程序实际上并不关心它们正在运行的硬件的情况,因此取决于您要实现的目标,它可能有帮助,也可能没有帮助。
【讨论】:
chroot: can't execute '/bin/sh': Permission denied