如何将原始二进制文件加载到 Qemu

How to load raw binary into Qemu

因为我找到的关于 Qemu 的所有信息都与 Linux 内核、uboot 或 elf 二进制文件有关,所以我不太清楚如何将二进制 blob 从嵌入式设备加载到特定地址并执行部分它的。我想要的代码 运行 只做算术运算,因此不涉及硬件依赖性。

我会用类似

的东西来启动 qemu

qemu-arm -singlestep -g8000

附加 gdb,设置初始寄存器状态并跳转到我的起始地址以单步执行它。

但是我如何最初将二进制数据加载到特定地址并最终设置额外的 ram 范围?

使用在 Qemu 之上运行的 Unicorn 框架实际上很容易。基于网站文档部分中的示例,我编写了一个 Python 脚本来加载数据、设置寄存器、添加一个钩子来打印重要的每步信息并在所需地址开始执行直到目标地址。

how to load a binary blob from an embedded device into a specific address and execute part of it.

您可以通过 generic loader (-device loader).

将二进制 blob 加载到 softmmu QEMU

I would start qemu with something like qemu-arm -singlestep -g8000

此命令行用于 linux-用户 QEMU 调用。它模拟来宾架构的用户空间 linux 进程,它是无特权的,不提供对任何设备的支持,包括通用加载器。尝试改用 qemu-system-arm。