Чувствителен ли заголовок программы к положению файла ELF?Linux

Ответить
Anonymous
 Чувствителен ли заголовок программы к положению файла ELF?

Сообщение Anonymous »

Я изучаю формат файла ELF и хочу знать, как исправить файл ELF.
В этой книгеELF_Format.pdf говорится:

Хотя на рисунке показана таблица заголовков программы сразу после заголовка ELF, а таблица заголовков разделов следует за разделами, фактические файлы могут отличаться. Более того, разделы и сегменты не имеют определенного порядка. Только заголовок ELF имеет фиксированную позицию в файле
на странице 8.

Из любопытства я скопировал заголовок программы и добавил его. до конца ELF, вот так:
  • Код: Выделить всё

    dd if=test.elf skip=64 bs=1 count=504 of=program_header.bin
    // копируем исходный заголовок программы (смещение PH = 64, размер записи PH = 56, номер записи PH = 9)
  • Код: Выделить всё

    cat new_program_header.bin >> test.elf
    // Добавляем заголовок программы в конец файла elf.
    Измените e_phoff заголовка ELF, укажите на скопированный заголовок программы на шаге 2.
После этого readelf -l test.elf может увидеть, что заголовок программы успешно изменен:
Изображение

Но когда я пытаюсь выполнить модифицированный 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»