Linux - 无法执行二进制文件
Linux - Cannot execute binary file
我知道这个问题已经被问了很多,但问题仍然存在:
我有一个 64 位 ELF 可执行文件,我试图在我的 Kali VM 上运行,但它一直告诉我该文件不存在。
解决这个问题的大部分时间是体系结构的差异,但我的Kali是x86-64:
$ uname -m
x86_64
喜欢我正在尝试执行的文件(名为“8”):
file 8
8: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, BuildID[sha1]=0xf3b096c69086131b091d1805894fde4fae0537a0, stripped
编辑:错误:
$ chmod +x 8
$ ./8
bash: ./8: No such file or directory
编辑 2:lld:
linux-vdso.so.1 => (0x00007fffe37fe000)
libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f680fac8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f680f73c000)
libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f680f343000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f680f13f000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f680ef28000)
/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f680fd49000)
我试过安装32位库以确保万无一失,但也没有解决任何问题。我也在我的 Ubuntu 上试过,同样的问题。
有人知道如何运行它吗?如果你们中的一些人想尝试其他架构,这里有一个 link:https://www.dropbox.com/s/s3ucka4ufd00zmy/8?dl=0
bash: ./8: No such file or directory
这是由于您的系统上没有安装 elf 解释器 的文件造成的。
您可以通过 运行
找出您的文件是用哪个 elf 解释器编译的
readelf -l ./8 | grep interpreter
我猜你编译了 /lib/ld-linux-x86-64.so.2
,而 standard 64 位 elf 解释器是 /lib64/ld-linux-x86-64.so.2
.
最好的解决方法是更正您的可执行文件的构建脚本(其中包含类似 -Wl,--dynamic-linker=/lib/ld-linux-x86-64.so.2
的内容)。
或者,创建符号链接:
sudo ln -s /lib64/ld-linux-x86-64.so.2 /lib
也会解决这个问题。
我知道这个问题已经被问了很多,但问题仍然存在:
我有一个 64 位 ELF 可执行文件,我试图在我的 Kali VM 上运行,但它一直告诉我该文件不存在。
解决这个问题的大部分时间是体系结构的差异,但我的Kali是x86-64:
$ uname -m
x86_64
喜欢我正在尝试执行的文件(名为“8”):
file 8
8: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, BuildID[sha1]=0xf3b096c69086131b091d1805894fde4fae0537a0, stripped
编辑:错误:
$ chmod +x 8
$ ./8
bash: ./8: No such file or directory
编辑 2:lld:
linux-vdso.so.1 => (0x00007fffe37fe000)
libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f680fac8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f680f73c000)
libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f680f343000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f680f13f000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f680ef28000)
/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f680fd49000)
我试过安装32位库以确保万无一失,但也没有解决任何问题。我也在我的 Ubuntu 上试过,同样的问题。
有人知道如何运行它吗?如果你们中的一些人想尝试其他架构,这里有一个 link:https://www.dropbox.com/s/s3ucka4ufd00zmy/8?dl=0
bash: ./8: No such file or directory
这是由于您的系统上没有安装 elf 解释器 的文件造成的。
您可以通过 运行
找出您的文件是用哪个 elf 解释器编译的readelf -l ./8 | grep interpreter
我猜你编译了 /lib/ld-linux-x86-64.so.2
,而 standard 64 位 elf 解释器是 /lib64/ld-linux-x86-64.so.2
.
最好的解决方法是更正您的可执行文件的构建脚本(其中包含类似 -Wl,--dynamic-linker=/lib/ld-linux-x86-64.so.2
的内容)。
或者,创建符号链接:
sudo ln -s /lib64/ld-linux-x86-64.so.2 /lib
也会解决这个问题。