0 / 0 / 0
Регистрация: 15.10.2020
Сообщений: 1
|
|
1 | |
FASM .dynamic в ELF15.10.2020, 18:26. Показов 1520. Ответов 0
Метки нет (Все метки)
Здравствуйте! Как то одним тихим вечером сел разобрать и понять что же такое Е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
|
15.10.2020, 18:26 | |
Ответы с готовыми решениями:
0
Error: Incompatible types: got "Dynamic Array Of reccopyTimeBoxMaxY" expected "Dynamic Array Incompatible type for arg no. 3: Got "Dynamic Array Of Dynamic Array Of LongInt", expected "AnsiString" elf или орк... Подобрать пароль к ELF |
15.10.2020, 18:26 | |
15.10.2020, 18:26 | |
Помогаю со студенческими работами здесь
1
Парсинг elf файлов Бинарный Транслятор в elf TrueStudio не создает .elf файл Web + Elf + IO ports + RAM Linux Elf + IO ports + RAM + WebBrowser Нужно изменить условие в ELF программе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |