解决 proxychains 启动报错 ‘ERROR: ld.so: object ‘libproxychains.so.3’ 的问题

0x00

最近更新 Kali 的系统,用到了 proxychains 来更新源,不成想,居然出现了报错。

proxychains sudo apt-get update 

ProxyChains-3.1 (http://proxychains.sf.net)
ERROR: ld.so: object 'libproxychains.so.3' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
Hit:1 http://deb.debian.org/debian stretch-backports InRelease              
Hit:2 http://mirrors.neusoft.edu.cn/kali kali-rolling InRelease             
Err:3 http://dl.google.com/linux/chrome/deb stable InRelease
  Connection failed [IP: 203.208.43.98 80]
Reading package lists... Done
W: Failed to fetch http://dl.google.com/linux/chrome/deb/dists/stable/InRelease  Connection failed [IP: 203.208.43.98 80]
W: Some index files failed to download. They have been ignored, or old ones used instead.

出现了下面这样的报错
ProxyChains-3.1 (http://proxychains.sf.net)
ERROR: ld.so: object 'libproxychains.so.3' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

0x02 分析解决

看样子是 'libproxychains.so.3 这个库找不到了,那么先来看看 有没有这个库,因为是用的 apt 安装的这个软件又不是 root 专用的所以一般来说会安装在 /usr 下面,先来搜索一波

find /usr/ -name libproxychains.so.3 -print  

/usr/lib/x86_64-linux-gnu/libproxychains.so.3

直接就找到了具体的位置。剩下的我们就要看看这个是需要写在哪里了,一进来说 /usr/lib 是默认的 ld 的位置 所有的库都在这,不会找不到。特殊的可以写在 /etc/ld.so.conf.d 里面,看位置不特殊。那么说明这个是配置文件在那个地方单独的写的配置文件,下一步我们来找一下, proxychains 都有哪些文件构成。

dpkg -L proxychains

/.
/etc
/etc/proxychains.conf
/usr
/usr/bin
/usr/bin/proxychains3
/usr/share
/usr/share/doc
/usr/share/doc/proxychains
/usr/share/doc/proxychains/changelog.Debian.gz
/usr/share/doc/proxychains/changelog.gz
/usr/share/doc/proxychains/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/proxychains3.1.gz

可以看到配置文件在 /etc/proxychains.conf 打开看了一下没有相关的东西。那来看看上面的这些东西都是什么吧。

dpkg -L proxychains |xargs file
/.:                                             directory
/etc:                                           directory
/etc/proxychains.conf:                          ASCII text
/usr:                                           directory
/usr/bin:                                       directory
/usr/bin/proxychains3:                          POSIX shell script, ASCII text executable
/usr/share:                                     directory
/usr/share/doc:                                 directory
/usr/share/doc/proxychains:                     directory
/usr/share/doc/proxychains/changelog.Debian.gz: gzip compressed data, max compression, from Unix, original size modulo 2^32 8567
/usr/share/doc/proxychains/changelog.gz:        gzip compressed data, max compression, from Unix, original size modulo 2^32 1551
/usr/share/doc/proxychains/copyright:           ASCII text
/usr/share/man:                                 directory
/usr/share/man/man1:                            directory
/usr/share/man/man1/proxychains3.1.gz:          gzip compressed data, max compression, from Unix, original size modulo 2^32 2372

/usr/bin/proxychains3:                          POSIX shell script, ASCII text executable

这个看着是个脚本,打开看看

cat /usr/bin/proxychains3 
#!/bin/sh
echo "ProxyChains-3.1 (http://proxychains.sf.net)"
if [ $# = 0 ] ; then
    echo "  usage:"
    echo "      proxychains <prog> [args]"
    exit
fi
export LD_PRELOAD=libproxychains.so.3
exec "$@"

这就释然了,更改一下成为路径。ok,完美解决。

# 把这行改一下
export LD_PRELOAD=libproxychains.so.3  

# 改成
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libproxychains.so.3

上一篇
下一篇