Глобальная таблица смещений
Таблица глобального смещения , или GOT , представляет собой раздел памяти компьютерной программы (исполняемые файлы и общие библиотеки), используемый для обеспечения кода компьютерной программы, скомпилированного в виде ELF- файла правильной работы , независимо от адреса памяти, где находится код программы или данные. загружается во время выполнения . [ 1 ]
Он сопоставляет символы в программном коде с соответствующими абсолютными адресами памяти для облегчения создания позиционно-независимого кода (PIC) и позиционно-независимых исполняемых файлов (PIE). [ 2 ] которые загружены [ 3 ] на другой адрес памяти при каждом запуске программы. Адрес памяти времени выполнения, также известный как абсолютный адрес памяти переменных и функций, неизвестен до запуска программы при запуске кода PIC или PIE. [ 4 ] поэтому не может быть жестко запрограммировано во время компиляции компилятором .
Таблица глобальных смещений представлена в виде разделов .got и .got.plt в файле ELF. [ 5 ] которые загружаются в память программы при запуске. [ 5 ] [ 6 ] операционной системы Динамический компоновщик глобальной таблицы смещений обновляет перемещения (от символов к абсолютным адресам памяти) при запуске программы или при доступе к символам. [ 7 ] Это механизм, который позволяет общие библиотеки перемещать (.so) на другой адрес памяти при запуске и избегать конфликтов адресов памяти с основной программой или другими общими библиотеками, а также защищать код компьютерной программы от взлома. [ 8 ]
Ссылки
[ редактировать ]- ^ «Динамическое соединение» . refspecs.linuxfoundation.org .
- ^ «Параметры генерации кода (с использованием коллекции компиляторов GNU)» . gcc.gnu.org .
- ^ «Как запускаются программы: двоичные файлы ELF [LWN.net]» . lwn.net .
- ^ «Глобальные таблицы смещений» . Botupcs.sourceforge.net .
- ^ Jump up to: а б «Исполняемый и связываемый формат (ELF)» . stevens.netmeister.org .
- ^ Винанд, Ян (10 мая 2011 г.). «PLT и GOT — ключ к совместному использованию кода и динамическим библиотекам» . Техноновинка . Проверено 14 апреля 2020 г.
- ^ Айхингер, Кристиан. «Формат ELF — как программы выглядят изнутри» . Мысли Кристиана Айхингера .
- ^ Сидхпурвала, Хузайфа (28 января 2018 г.). «Усиление защиты двоичных файлов ELF с помощью перемещения только для чтения (RELRO)» . Красная шляпа .