Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

qemu-arm running compiled binary

Trying to run a compiled binary I've extracted from a firmware on qemu, however I encounter this error:

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

I'm using the "-L" flag, as suggested in: qemu-arm can't run arm compiled binary

However, this flag doesn't seem to make a different for me, neither does setting QEMU_LD_PREFIX

Could it be some missing dependencies?

like image 653
Jack Avatar asked Jan 30 '23 02:01

Jack


1 Answers

It looks like the system is not able to find the dynamic linker (which in your case appears to be /system/bin/linker, rather than the the normal /lib/ld-linux-armhf.so.3 or similar.

Since I don't have access to your code, I've tried to reproduce this by mounting a Raspberry Pi "Raspbian" image on /mnt on my system. If I try to run /mnt/bin/echo hello, like this:

qemu-arm  /mnt/bin/echo hello

I get a similar error:

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

I can provide an explicit path to the dynamic linker like this:

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

Now I get a different error:

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

That's actually great, because that is a normal "I can't find my shared libraries" error, and the solution is to use LD_LIBRARY_PATH. Rather than setting this in our environment, we can set this in the environment created by qemu-arm with the -E flag:

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

Which gets me the output:

hello

I suspect that these same two techniques -- providing an explicit path to the linker, and providing an explicit library search path in LD_LIBRARY_PATH -- may help you out. Let me know how it works!

like image 98
larsks Avatar answered Feb 03 '23 23:02

larsks