【问题标题】:qemu-arm running compiled binaryqemu-arm 运行编译后的二进制文件
【发布时间】:2018-05-17 01:52:00
【问题描述】:

尝试运行我从 qemu 上的固件中提取的已编译二进制文件,但遇到此错误:

root@ubuntu14:~# qemu-arm -L /usr/arm-linux-gnueabi ~/x
/system/bin/linker: No such file or directory

root@ubuntu14:~# file ./x
./x: ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), stripped

我正在使用“-L”标志,如下所示: qemu-arm can't run arm compiled binary

但是,这个标志对我来说似乎没有什么不同,设置 QEMU_LD_PREFIX 也没有

可能是缺少一些依赖项吗?

【问题讨论】:

  • 顺便说一句,当我编译一个没有“-static”标志的简单“Hello World”时,它似乎可以工作:arm-linux-gnueabi-gcc -ohello-nostatic hello.c

标签: c arm reverse-engineering qemu firmware


【解决方案1】:

系统似乎无法找到动态链接器(在您的情况下,它似乎是 /system/bin/linker,而不是正常的 /lib/ld-linux-armhf.so.3 或类似的。

由于我无权访问您的代码,因此我尝试通过在我的系统上的/mnt 上安装一个 Raspberry Pi “Raspbian” 映像来重现这一点。如果我尝试运行/mnt/bin/echo hello,像这样:

qemu-arm  /mnt/bin/echo hello

我收到类似的错误:

/lib/ld-linux-armhf.so.3: No such file or directory

我可以像这样提供动态链接器的显式路径:

qemu-arm  /mnt/lib/ld-linux-armhf.so.3 /mnt/bin/echo hello

现在我得到一个不同的错误:

/mnt/bin/echo: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

其实很好,因为这是一个正常的“我找不到我的共享库”错误,解决方法是使用LD_LIBRARY_PATH。我们可以在qemu-arm 使用-E 标志创建的环境中设置它,而不是在我们的 环境中设置它:

qemu-arm -E LD_LIBRARY_PATH=/mnt/lib/arm-linux-gnueabihf/  /mnt/lib/ld-linux-armhf.so.3 /mnt/bin/echo hello

这让我得到了输出:

hello

我怀疑这两种相同的技术——提供链接器的显式路径,以及在LD_LIBRARY_PATH 中提供显式库搜索路径——可能会对您有所帮助。告诉我它是如何工作的!

【讨论】:

  • 听起来很有希望,会试试这个。正如彼得所说,我可能还需要从文件系统中提取链接器。
  • 从这一行:qemu-arm /mnt/lib/ld-linux-armhf.so.3 /mnt/bin/echo hello,您是否在此处省略了标志说明符?这似乎被解释为试图在模拟器上运行 /mnt/lib/ld-linux-armhf.so.3。查看 qemu 的帮助,我没有看到这里想要的标志。
  • @dsharlet 不,这完全是故意的。那是显式调用动态链接器,而不是让系统动态地找到它。您可以在本地系统上尝试:/lib64/ld-linux-x86-64.so.2 /bin/ls
【解决方案2】:

/system/bin/linker 是 Android 动态链接器,因此您需要一个包含 Android 动态链接器和动态库的目录,而不是用于 Linux(/usr/arm-linux-gnueabi 将是)的目录。我希望您应该能够从固件映像中提取相关文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2012-07-08
    相关资源
    最近更新 更多