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

问题描述 投票:0回答:1

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

我会在启动qemu时使用类似于

qemu-arm -singlestep -g8000

附上gdb,设置初始寄存器状态,然后跳转到我的起始地址进行单步操作。

但我如何将二进制数据初始化到一个特定的地址,并最终设置一个额外的ram范围?

qemu
1个回答
1
投票

如何从嵌入式设备加载二进制blob到一个特定的地址,并执行其中的一部分。

你可以通过以下方法将二进制blob加载到softmmu QEMU中。通用装载机 (-device loader).

我会在qemu的开头写上 qemu-arm -singlestep -g8000

这个命令行是用于linux-用户QEMU调用的,它模拟了guest架构的userspace linux进程,它是无权限的,不提供任何设备的支持,包括通用加载器。它模拟客体架构的用户空间linux进程,它是无权限的,不提供对任何设备的支持,包括通用加载器。试着用qemu-system-arm来代替。


0
投票

其实很简单,用 独角兽 框架,它工作在Qemu之上。根据网站文档部分的例子,我写了一个Python脚本,加载数据,设置寄存器,添加一个钩子,打印重要的每一步信息,并在所需地址开始执行,直到目标地址。

© www.soinside.com 2019 - 2024. All rights reserved.