понять hexedit эльфа

Рассмотрим следующее шестнадцатеричное отображение файла ELF.

00000000   7F 45 4C 46  01 01 01 00  00 00 00 00  .ELF........
0000000C   00 00 00 00  02 00 03 00  01 00 00 00  ............
00000018   30 83 04 08  34 00 00 00  50 14 00 00  0...4...P...
00000024   00 00 00 00  34 00 20 00  08 00 28 00  ....4. ...(.
00000030   24 00 21 00  06 00 00 00  34 00 00 00  $.!.....4...
0000003C   34 80 04 08  34 80 04 08  00 01 00 00  4...4.......
00000048   00 01 00 00  05 00 00 00  04 00 00 00  ............
  1. Сколько у него заголовков разделов?
  2. Это объектный файл или исполняемый файл?
  3. Сколько у него заголовков программ?
  4. Если есть заголовки программ, что делает первый заголовок программы?
  5. Если есть какие-либо заголовки разделов, по какому смещению находится таблица заголовков разделов?

person user1462787    schedule 24.06.2012    source источник
comment
Не используйте hexedit, используйте objdump с правильными параметрами, такими как -f или -x...   -  person Griwes    schedule 24.06.2012


Ответы (1)


Странно, этот шестнадцатеричный дамп выглядит как ваше домашнее задание< /strong> мне...

  1. Есть 36 заголовков разделов.
  2. Это исполняемый файл.
  3. Он имеет 8 заголовков программ.
  4. Как видно по первому слову (смещение 0x34:0x0006) в первом заголовке программы, оно имеет тип PT_PHDR, который как раз информирует о характеристиках самой таблицы заголовков программы.
  5. Таблица заголовков разделов начинается с байта 5200 (0x1450 в шестнадцатеричном формате).

Откуда я знаю этот материал? Сбрасывая шестнадцатеричный код в двоичный файл и читая его с помощью readelf -a (потому что я ленивый). Кроме вопроса №. 4, который мне пришлось выяснять вручную, прочитав man 5 elf.

person iblue    schedule 24.06.2012
comment
Вы уверены, что заголовков разделов 36? почему не 34? из hexedit кажется, что это 34.. где вы видите 36? Благодарность - person user1462787; 25.06.2012
comment
Количество заголовков разделов находится по смещению 0x30, что равно 24 00, то есть (помните о порядке следования байтов!) 0x0024, что равняется 36 в десятичном виде. - person iblue; 25.06.2012