Для блокирования работы переменной окружения LD_PRELOAD, позволяющей принудительно загрузить разделяемую библиотеку со своими обработчиками для функций используемых в программе библиотек, можно использовать следующий скрипт.ldpreload-disable.sh:
#!/bin/bash
if [ $# -lt 1 ];then
printf "./ldpreload-disable.sh [ld-linux.so] [64|32]\n"
exit 0
fild_linux="$1"
[ "$2" == "64" ] && xor='\x48' || xor=''offset=$((16#$(readelf -s $ld_linux | awk '/do_preload/ {print $2}')))
printf $xor'\x31\xc0\xc3' | dd conv=notrunc of=$ld_linux bs=1 seek=$offsetПример использования для 64-разрядной системы:
$ sudo bash ldpreload-disable.sh $HOME/fedora-chroot/lib64/ld-2.22.so 64
для 32-разрядной системы:
$ sudo bash ldpreload-disable.sh $HOME/fedora-chroot/lib/ld-2.22.so 32
URL: https://github.com/hc0d3r/ldpreload-disable
Обсуждается: http://www.opennet.dev/tips/info/2988.shtml
Судя по версии glibc это делается для отключения недавнего руткита, и что там, что тут нет никакой инфы о том, имеет ли версия glibc значение, как и другой вспогательной инфы, нахрена такие топики писать?
автор применил древнюю чёрную магию для отключения LD_PRELOAD. детки, не пытайтесь повторить это дома.
З.Ы. имхо, стоило бы упомянуть, что это всё будет работать до первого обновления libc
Ума-то нет вот и пишут всякую чушь.
Отличный способ отстрелить себе голову
Это что, предлагается хачить бинарник ld.so этим стремным скриптом? После чего как минимум будет обламываться проваерка контрольных сумм пакетником, а если не повезло то система сломается совсем. Виндовозненько.
Чего только люди не делают, лишь бы LFS не использовать.
Ubuntu Xenial (16.04):
> readelf -s /lib/x86_64-linux-gnu/ld-2.23.so | grep do_preloadпустой вывод
в этом совете хорошо всё: и содержимое и автор в ксакеповской транскрипции. Очень сочетаемо.
[ $# -lt 1 ] && \
{ echo "usage: `basename $0` blablabla" ; exit 0 ; }дальше лень править тупизмы.
pavel@amd64:~$ readonly LD_PRELOAD
pavel@amd64:~$ export LD_PRELOAD=/tmp/libfake.so
bash: LD_PRELOAD: доступная только на чтение переменная---
ессесенно readonly LD_PRELOAD прописывать в /etc/profile
Ага, щас.1) можно запустить bash --noprofile, и /etc/profile не будет зачитан
2) работа с readonly-переменными окружения зависит от shell. bash вот не позволяет снова сделать её доступной на запись, а вот в zsh можно спокойно написать "typeset +r LD_PRELOAD" и задать её любое новое значение.
> Ага, щас.
> 1) можно запустить bash --noprofile, и /etc/profile не будет зачитанеще есть /etc/bash.bashrc, еще парсер написать.