我正在通过连接到QEMU(远程gdb调试)使用IDA Pro调试ARM二进制文件。能够成功调试ARM二进制文件。但是,我无法在二进制文件中执行ARM_versatilepbfork()等系统调用。

我认为原因是我使用的是QEMU的裸机配置。因此,如何修改此配置以在QEMU上运行完整的Linux系统,以便我也可以执行系统调用?

IDA Pro的socket()文件中还有另一个设备名称ARM_Linux,其中在命令行中传递了gdb_arch.cfg参数。

我选择了此设备,但即使如此,仍无法执行syscalls。在这里。

评论

对于Qemu和ARM,我不知道这样的事情,但是有一种机制可以为Bochs-Debugging提供模拟功能。在插件/ boch内部查看更多信息。伊戈尔可能最适合回答这个问题。也许没人问过这个功能?

#1 楼

听起来您正在尝试通过直接在qemu-system-arm中运行来模拟ARM ELF二进制文件,在这种情况下,系统调用不起作用的原因是没有Linux内核可以处理这些系统调用。

您可能需要的是qemu-arm,它可以将ARM二进制文件作为普通ELF运行,并将ARM syscall转换为您的基础Intel内核。 qemu-arm模拟器具有IDA可以连接到的内置GDB服务器。

或者,您可以获取ARM Linux系统(例如Debian,或者可能是设计为在其中运行的raspi版本)。 Qemu?)在qemu-system-arm中运行,此时,您只需将ELF二进制文件复制到Qemu VM并在其中运行即可。然后,您可以使用GDB服务器或IDA随附的Linux ARM调试存根将IDA附加到正在运行的进程。

评论


这是准备好运行sourceforge.net/projects/rpiqemuwindows的预打包的raspbian qemu映像

–0xea
13年8月19日在14:35