
Минимальный инспектор ELF, написанный на C, для быстрой проверки структуры бинарных файлов.
Не замена readelf или objdump. Просто быстрый и узкоспециализированный инструмент для типичных вопросов при реверс-инжиниринге:
Также служит читабельным примером разбора ELF на C. Корректно обрабатывает бинарники без символов и только с программными заголовками.
(elfpeek:ls).dynsym, так и .symtab<elf.h>make
Опционально: установите libreadline-dev для истории команд в REPL.
./elfpeek
./elfpeek /bin/ls # show headers, sections, symbols
./elfpeek /bin/ls 0x6760 # resolve address
| Команда | Алиас | Описание |
|---|---|---|
open <path> | o | Открыть ELF-файл |
close | Закрыть текущий файл | |
info | i | Показать заголовок ELF |
sections | s | Список заголовков секций |
phdr | p | Список программных заголовков |
entry | e | Показать точку входа |
symbols [dyn|sym] | sym | Вывести таблицы символов |
resolve <addr> | r | Разрешить виртуальный адрес |
dump <.sec|@off> [n] | d | Hex-дамп (секция или смещение) |
help | ? | Показать справку |
quit | q | Выйти |
Секции:
.text, .plt).data, .bss).rodata)Hexdump:
00)20-7E)01-1F)80-FF)tests/ содержит примеры ELF-файлов:
| Файл | Описание |
|---|---|
elf32_le.bin | 32-битный little-endian (i386) |
elf32_be.bin | 32-битный big-endian (PowerPC) |
elf64_be.bin | 64-битный big-endian (PowerPC64) |
elf64_le_pie.bin | PIE-исполняемый файл |
elf64_le_static.bin | Статически слинкованный |
elf64_le_dynsym_only.bin | Без символов, только dynsym |
elf64_le_so.bin | Разделяемый объект |
elf64_le_segments_only.bin | Без заголовков секций |
relocs — показать релокацииgot/pltMIT