是否可以从模拟器/模拟器内的生产设备运行闪存转储?

逆向工程 调试 硬件 米普 标签
2021-07-10 09:58:50

我不确定这是否是正确的论坛,或者它是否更适合不同的 SE sub,尽管我认为这是一个合适的地方。

我想知道是否有任何模拟器能够直接运行闪存转储,以在其转储的设备上针对相同的架构?因此,例如,如果转储是从运行 Broadcom MIPS CPU 的设备(通过 JTAG)获取的,并且它包含整个系统(引导加载程序、固件、文件系统、NVRAM 等),那么我可以挂载(或应该我说,将它加载到内存中)直接将原始图像、内存和所有内容加载到内存中,然后运行它,类似于我如何将它闪存到具有相同芯片的不同设备上?

我一直在研究不同的软件,例如 OVPsim(这是一个“完整的系统模拟器”和 Qemu,但我不确定它们是否可以直接运行完整的转储。

任何人都可以对此有所了解,查看所有内容可能会令人困惑。

1个回答

为了从映像启动,您需要弄清楚设备的硬件配置。这就是外设被映射到哪里,它们的操作和寄存器。如果没有针对您正在处理的 SOC 和硬件板的规范,您将不得不对设备的固件进行逆向工程。这将使您能够弄清楚软件期望硬件如何运行。由于 QEMU 具有 MIPS 支持,因此您可以让 QEMU 模拟所述外围设备。您在 QEMU 下使用的模式称为系统仿真。外围设备的组合通常称为板。您需要设置一个与您从中获取转储的设备相匹配的板,或者至少与编译到引导加载程序和内核中的支持兼容的板。希望你

弄清楚一切以创建一个可以启动整个映像的模拟环境可能需要大量工作。我会说我们可能会讨论多年的逆向工程和实施工作,具体取决于您可用的文档级别。

有些公司专门创建这种仿真环境,例如Lauterbach使用商用工具设置环境可能非常昂贵。

TL;DR这将是很多工作,可能不值得。您可能需要考虑使用图像的一小部分。例如可能是数据分区而不是完整的内核。