В этой книгеELF_Format.pdf говорится:
Хотя на рисунке показана таблица заголовков программы сразу после заголовка ELF, а таблица заголовков разделов следует за разделами, фактические файлы могут отличаться. Более того, разделы и сегменты не имеют определенного порядка. Только заголовок ELF имеет фиксированную позицию в файле
на странице 8.
Из любопытства я скопировал заголовок программы и добавил его. до конца ELF, вот так:
- // копируем исходный заголовок программы (смещение PH = 64, размер записи PH = 56, номер записи PH = 9)
Код: Выделить всё
dd if=test.elf skip=64 bs=1 count=504 of=program_header.bin - // Добавляем заголовок программы в конец файла elf.
Код: Выделить всё
cat new_program_header.bin >> test.elf
Измените e_phoff заголовка ELF, укажите на скопированный заголовок программы на шаге 2.

Но когда я пытаюсь выполнить модифицированный elf, происходит `Ошибка сегментации`:
Код: Выделить всё
[root@localhost 1]# ./test.elf
Segmentation fault (core dumped)
[root@localhost 1]# ls
program_header.bin test.elf test.elf.54214.core
[root@localhost 1]#
[root@localhost 1]# gdb test.elf -c test.elf.54214.core
GNU gdb (GDB) Rocky Linux 10.2-13.el9
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:
.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from test.elf...
(No debugging symbols found in test.elf)
[New LWP 54214]
warning: Section `.reg-xstate/54214' in core file too small.
Core was generated by `./test.elf'.
Program terminated with signal SIGSEGV, Segmentation fault.
warning: Section `.reg-xstate/54214' in core file too small.
#0 0x00007fad7fcc2b38 in ?? ()
(gdb) bt
#0 0x00007fad7fcc2b38 in ?? ()
#1 0x0000000000000000 in ?? ()
(gdb)
Я пытаюсь найти в формате elf мануал и гуглил, ответа не нашел.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -sensitive
Мобильная версия