Как узнать, включен ли ASLR для общего объекта (.so )?

Вы запрашиваете awk, но вы также можете использовать для этого более специализированный инструмент:csvtool.

csvtool -t ' ' -u ' ' namedcol foo,baz file

или

csvtool -t ' ' -u ' ' col 1,3 file
0
19.11.2021, 22:12
1 ответ

Непонятно, о каких платформах вы спрашиваете (, например. и Linux, и Windows имеют общие библиотеки и ASLR и имеют несколько схожие проблемы в отношении предпочтительных адресов ), поэтому я предполагаю Linux.

Все файлы.so должны быть скомпилированы с -fPIC, чтобы все они поддерживали ASLR и располагались по адресу 0. Но каждый.so может быть предварительно связан системным администратором, и в этом случае загрузчик попробуйте загрузить.so по фиксированному адресу, отключив таким образом ASLR. Вы можете проверить, так ли это, через

$ readelf -SW path/to/lib.so | grep prelink

Если предварительно связанный адрес уже занят, загрузчик переместит библиотеку на другой адрес.

DLL-библиотеки Windows имеют аналогичную функцию, называемую предпочтительными адресами , которая раньше была включена по умолчанию в более старых версиях, но, насколько мне известно, больше не включена.

0
20.11.2021, 08:20

Теги

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