Секреты покорения эльфов



         

Анатомия эльфов и их репродуктивные возможности - часть 2


Несмотря на то, что системный загрузчик игнорирует таблицу секций, линкер все-таки помещает ее копию в исполняемый файл. Место тратиться совсем немного, зато отладчикам и дизассемблерам так приятнее. По не совсем понятным причинам gdb и многие другие программы отказываются загружать в файл с поврежденной или отсутствующей таблицей секций, чем часто пользуются для защиты программ от постороннего вмешательства.

Рисунок 3 структура ELF-формат с точки зрения линкера (слева) и системного загрузчика операционной системы (справа)

Структуру и назначение полей служебных заголовком здесь разбирать не будем. Этим займется hex-редактор и нам эти подробности не понадобятся. Интересующиеся могут обратиться к файлу /usr/include/elf.h — там все подробно расписано.

Лучше сосредоточимся на загрузке файла в память. По умолчанию ELF-заголовок проецируется по адресу 8048000h, который прописан в его заголовке. Это и есть базовый адрес загрузки. На стадии линковки он может быть свободно изменен на другой, но большинство программистов оставляют его "как есть". Все сегменты проецируются в память в соответствии с виртуальными адресами, прописанными в таблице сегментов, причем, виртуальная проекция образа всегда непрерывна, и между сегментами не должно быть незаполненных "дыр".

Начиная с адреса 40000000h располагаются совместно используемые библиотеки ld-linix.so, libm.so, libc.so и другие, которые связывают операционную систему с прикладной программой. Ближайший аналог из мира Windows – KERENL32.DLL, реализующая win32 API, что расшифровывается как Application Programming Interface, но при желании программа может вызывать функции операционной системы и напрямую. В NT за это отвечает прерывание INT 2Eh, в LINUX – как правило INT 80h (подробнее о различии в реализации системных вызовов можно прочитать в уже упомянутом документе "UNIX Assembly Codes Development for Vulnerabilities Illustration Purposes") или книге Зубкова "Ассемблер– язык неограниченных возможностей".




Содержание  Назад  Вперед