Форум программистов, компьютерный форум, киберфорум
FASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.10.2020
Сообщений: 1
1
FASM

.dynamic в ELF

15.10.2020, 18:26. Показов 1520. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Как то одним тихим вечером сел разобрать и понять что же такое ЕLF. Все шло хорошо: написал "хелло ворлд" с использованием динамической библиотеки, скомпилировал, открыл в hexedit и начал разбираться! Но встретя на своем пути секцию с кодом .dynamic я просто не смог понять что же там происходит/ Ниже представлю разбор ElF

Структура описывающая содержание заголовка ELF

Код
	#define EI_NIDENT 16
	typedef struct {
		unsigned char   e_ident[EI_NIDENT];
		Elf32_Half      e_type;
		Elf32_Half      e_machine;
		Elf32_Word      e_version;
		Elf32_Addr      e_entry;
		Elf32_Off       e_phoff;
		Elf32_Off       e_shoff;
		Elf32_Word      e_flags;
		Elf32_Half      e_ehsize;
		Elf32_Half      e_phentsize;
		Elf32_Half      e_phnum;
		Elf32_Half      e_shentsize;
		Elf32_Half      e_shnum;
		Elf32_Half      e_shtrndx;
	} Elf32_Ehdr;
	

	Имя	Значение	Назначение
	EI_MAG0	0	Идентификация файла
	EI_MAG1	1	Идентификация файла
	EI_MAG2	2	Идентификация файла
	EI_MAG3	3	Идентификация файла
	EI_CLASS	4	Класс файла
	EI_DATA	5	Кодировка данных
	EI_VERSION	6	Версия файла
	EI_OSABI	7	Идентификация операционной системы и ABI
	EI_ABIVERSION	8	Версия ABI
	EI_PAD	9	Начало дополняющих байтов
	EI_NIDENT	16	Размер e_ident[]


	typedef struct {
		Elf32_Word p_type;
		Elf32_Off p_offset;
		Elf32_Addr p_vaddr;
		Elf32_Addr p_paddr;
		Elf32_Word p_filesz;
		Elf32_Word p_memsz;
		Elf32_Word p_flags;
		Elf32_Word p_align;
	} Elf32_Phdr;
	
	
	
ELF Header:
													13*4 = 52
	7F 45 4C 46  01 01 01 03  00 00 00 00  00 00 00 00  02 00 03 00  01 00 00 00  AE 91 04 08  34 00 00 00        
	00 00 00 00  00 00 00 00  34 00 20 00  05 00 28 00  00 00 00 00


	 
Program Headers:                                                            					8*5*4 = 160
  ------03 00 00 00  D4 00 00 00  D4 80 04 08  D4 80 4 08  13 00 00 00  13 00 00 00  04 00 00 00  01 00 00 00  
  |
  |	02 00 00 00  E7 00 00 00  E7 80 04 08  E7 80 04 08  50 00 00 00  50 00 00 00  04 00 00 00  01 00 00 00
  |
  |	01 00 00 00  00 00 00 00  00 80 04 08  00 80 04 08  AE 01 00 00  AE 01 00 00  06 00 00 00  00 10 00 00
  |
  |	01 00 00 00  AE 01 00 00  AE 91 04 08  AE 91 04 08  14 00 00 00  14 00 00 00  05 00 00 00  00 10 00 00
  |
  |	01 00 00 00  C2 01 00 00  C2 A1 04 08  C2 A1 04 08  0E 00 00 00  0E 00 00 00  06 00 00 00  00 10 00 00
  |
  |
  |
  ------INTERP

		2F 6C 69 62  2F 6C 64 2D  6C 69 6E 75  78 2E 73 6F  2E 32 00
		/  l   i  b  /   l  d  -   l  i  n  u   x  .  s  o   .  2





DYNAMIC											80
											
	01  00 00 00 0D  00 00 00		NEEDED    смещение на имя нужной библиотеки
	 
	05  00 00 00 8F  81 04 08		STRTAB    адрес таблицы строк

	0A  00 00 00 17  00 00 00		STRSZ	  Размер в байтах таблицы строк
	 
	06  00 00 00 37  81 04 08		SYMTAB    Адрес таблицы символов
	 
	0B  00 00 00 10  00 00 00		SYMENT    Размер в байтах элемента таблицы строк
	 
	11  00 00 00 67  81 04 08		REL       Адрес таблицы перемещений Rel  
	 
	12  00 00 00 10  00 00 00 		RELSZ     Размер в байтах таблицы Rel

	13  00 00 00 08  00 00 00 		RELENT    Размер в байтах элемента таблицы Rel
				
	04  00 00 00 77  81 04 08 		HASH      Адрес хэш-таблицы символов

	00  00 00 00 00  00 00 00         	NULL      Этим значением помечается конец динамического раздела



LOAD 1
00 
00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 01  00 00 00 00  00 00 00 00  00 00 00 12  00 00 00
08  00 00 00 00  00 00 00 00  00 00 00 12  00 00 00 A6
81 04 08 01  01 00 00 AA  81 04 08 01  02 00 00
01  00 00 00 03  00 00 00 00  00 00 00 01  00 00 00 02  00 00 00 00  00 00 00 00  70 72 69 6E  74 66 00 
										   p  r  i  n   t
65
78 69 74 00  6C 69 62 63  2E 73 6F 2E  36 00 00 00  00 00 00 00  00 00

LOAD 2														20
68 C2  A1 04 08 FF  15 A6 81 04  08 83 C4 04  FF 15 AA 81  04 08
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2020, 18:26
Ответы с готовыми решениями:

Error: Incompatible types: got "Dynamic Array Of reccopyTimeBoxMaxY" expected "Dynamic Array
Операторы перезагрузки есть operator:=(rhs1: recTimeBoxMaxY):reccopyTimeBoxMaxY; begin with...

Incompatible type for arg no. 3: Got "Dynamic Array Of Dynamic Array Of LongInt", expected "AnsiString"
Массив объявлен так arraygrid: array of array of array of array of array of integer; и вот эта...

elf или орк...
Суть вопроса такова. Есть контроллер virt2real с процессором dm365. На нем вертится линукс. К...

Подобрать пароль к ELF
Здравствуйте, прошу Вашей помощи, может быть кто-то поделится умными идеями, задали задание -...

0
15.10.2020, 18:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2020, 18:26
Помогаю со студенческими работами здесь

Парсинг elf файлов
Работаю в Qt Creator в windows7. Сборка происходит для Linux. Нужна библиотека для работы с...

Бинарный Транслятор в elf
Допустим, я транслировал код одной архитектуры в код x86. Каким образом создать elf файл с данным...

TrueStudio не создает .elf файл
Добрый день. Решил перейти с атмег на STM32 и столкнулся с проблемой: при компиляции проекта...

Web + Elf + IO ports + RAM
Доброго времени дня! Нахожусь в стадии поиска пути решения проблемы. Задача в следующем: 1. Есть...

Linux Elf + IO ports + RAM + WebBrowser
Доброго времени дня! Нахожусь в стадии поиска пути решения проблемы. Задача в следующем: 1. Есть...

Нужно изменить условие в ELF программе
Здравствуйте! У меня есть программа в формате ELF, которая запрашивает ключ и выводит - верный или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru