Что ELF является Волшебным?

Perl:

perl -ne'$h{int$_/10000}++;END{printf"%d0000-%d0000  %d\n",$_,$_+1,$h{$_}for sort{$a<=>$b}keys%h}'

расширенный:

while(<>) { #read each line (-n)
  $h{int $_/10000}++; #count buckets
}
for (sort {$a<=>$b} keys %h) { #sort numerically
  printf "%d0000-%d0000  %d\n", $_, $_+1, $h{$_};
}
26
17.03.2017, 12:46
2 ответа

Прямо из man-страницы, на которую вы ссылаетесь:

elf - format of Executable and Linking Format (ELF) files

ELF определяет бинарный формат исполняемых файлов, используемых Linux. Когда вы вызываете исполняемый файл, операционная система должна знать, как правильно загрузить исполняемый файл в память, как разрешить динамические зависимости от библиотек, а затем где перейти к загруженному исполняемому файлу, чтобы начать его выполнение. Формат ELF предоставляет эту информацию. Магический ELF используется для идентификации ELF-файлов и представляет собой всего лишь первые несколько байт файла:

% od -c -N 16 /bin/ls
0000000 177   E   L   F 002 001 001  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000020

или

% readelf -h /bin/ls | grep Magic
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 

Эти 16 байт однозначно идентифицируют файл как ELF исполняемый файл. Многие форматы файлов имеют "волшебные" байты, которые выполняют одну и ту же задачу -- определение типа файла.

37
27.01.2020, 19:39

«Волшебные числа» - это имя, данное постоянным последовательностям байтов (обычно) в начале файлов, используемых для отмены этих файлов в качестве конкретного формата файла. Они служат подобной цели для подачи данных.

см. В разделе «Яргон» для получения дополнительной информации.

Например, изображения PNG всегда начинаются с тех же восьми байтов: 137 80 78 71 13 10 26 10

Следовательно, Elf Magic Numbers - это байты в начале эльфийских файлов, которые идентифицируют их как таковые.

11
27.01.2020, 19:39

Теги

Похожие вопросы