Kali下的ld-linux.so.2

发布时间 2023-08-03 00:49:02作者: Festu

Kali下的ld-linux.so.2

问题描述

在给Kali安装silentEye时,运行下载得到的".run"文件时提示报错:image-20230803001154850

明明有这个文件但运行时却找不到。查找资料发现是系统位版本与文件位版本不匹配,分别查看版本:image-20230803001312845

64位的系统所用的加载动态链接库的文件是 /lib64/ld-linux-x86-64.so.2 ,这是个软链接,实际上是 /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 文件,直接用该加载器去运行".run"文件会提示:

/home/sam/Public/silenteye-0.4.2.beta-ubuntu-12.04.run: error while loading shared libraries: /home/sam/Public/silenteye-0.4.2.beta-ubuntu-12.04.run: wrong ELF class: ELFCLASS32

通过 readelf -l silenteye-0.4.2.beta-ubuntu-12.04.run 查看其文件特征会发现他需要 /lib/ld-linux.so.2 这样一个interpreter,猜测这是与前面64位的 ld-linux-x86-64.so.2 对应的文件,所以需要先查找64位文件依赖的包是什么:

❯ dpkg -S ld-linux-x86-64.so.2
libc6:amd64: /lib64/ld-linux-x86-64.so.2
libc6:amd64: /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2

该命令查找包含已安装的特定文件的包名称,可以看见是 libc6:amd64 ,冒号后的是版本。这是64位linux的系统链接库包。

先打开系统对于32位库的支持,sudo dpkg --print-architecture 可以查看本机支持的架构版本,此处为 amd64 ,我们需要打开 i386(即32位)

dpkg --add-architecture i386
sudo apt update
sudo apt dist-upgrade

然后查看libc6有没有对应i386的包:

❯ apt search libc6
...
libc6/kali-rolling,now 2.37-5 amd64 [installed]
  GNU C Library: Shared libraries

libc6-amd64/kali-rolling 2.37-5 i386
  GNU C Library: 64bit Shared libraries for AMD64

amd64已安装,安装i386的即可(忽略了下面的带"-cross"的glibc包,应该是用于交叉编译的库包,但是不知道适不适用,因此不敢乱下):

sudo apt install libc6:i386

下载完毕后会在 /lib 下发现 ld-linux.so.2 这个文件,对,它就是32位系统的动态链接加载器。再次运行".run"文件发现可以成功,问题解决!


也没完全解决,这个silenteye的安装器不支持kali,因此最后安装失败= =。