Опция LD для детерминированной загрузки программ и общих объектов?

В любой нормальной системе, если вы не настроили chroot с их собственным / dev , все файлы устройств находятся в папке / dev . Только root может создавать файлы устройств, поэтому вам не нужно беспокоиться о том, что злоумышленники создают файлы устройств где-либо еще.

Итак, все, что вам нужно сделать, это найти файлы в папке / dev , которые относятся к тому же устройству, что и интересующее вас.

ls -lR /dev |awk '/^c/ && $5 == "81," && $6 == "0"'

Вероятно, это покажет только / dev / video0 . Обычно для каждого устройства существует отдельный файл устройства и, возможно, есть дополнительные символические ссылки на него.

Таким образом, практический ответ на ваш вопрос является простым. Просто проверьте, в каких процессах открыт файл устройства.

fuser /dev/video0

Если вы хотите отслеживать доступы (т. Е. Перехватывать процессы, которые могут открывать файл устройства в любое время), используйте один из методов мониторинга доступа к файлам Linux для файла (ов) устройства: настройте наблюдение (и проверьте, какие процессы уже открыли файл (ы) устройства)

inotifywait -m -e open,close /dev/video0 &
sleep 1; fuser /dev/video0   # check for processes that have already opened the device

или настройте правило аудита, которое будет регистрировать доступы в системных журналах (обычно /var/log/audit/audit.log )

auditctl -w path=/dev/video0 &
sleep 1; fuser /dev/video0   # check for processes that have already opened the device

1
12.08.2017, 15:53
1 ответ

Это не контролируется компоновщиком, это контролируется ядром. Вы можете отключить ASLR, используяrandomize_va_space :

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

Чтобы повторно включить его:

echo 2 | sudo tee /proc/sys/kernel/randomize_va_space

Вы также можете отключить его для одного процесса, используя setarch, чтобы применить соответствующую личность:

setarch $(uname -m) -R command

запустит команду без ASLR.

2
27.01.2020, 23:33

Теги

Похожие вопросы