Можно ли получить версию ядра из файла образа ELF без разборки или использования grep или строк? - PullRequest
0 голосов
/ 07 марта 2020

У меня есть файл образа ELF vmlinuz. Мне нужно получить версию ядра из файла образа, не разбирая его. Можно ли получить версию керенела из смещений этого сжатого файла изображения? Файл является исполняемым 64-битным MSF-файлом ELF, статически связан, не разделен.

1 Ответ

0 голосов
/ 31 марта 2020

Как упоминалось ранее, номер версии жестко запрограммирован в сжатый файл изображения. Во-первых, это зависит от алгоритма сжатия, используемого для сжатия содержимого, от способа его распаковки. Распаковка файлов в linux может быть сложной из-за комбинации алгоритмов сжатия и соответствующих параметров инструмента (не забывать о более новой версии tar для более новых алгоритмов). Для файлов с

file extension tar.gz, tgz use e.g. $ tar -xzv -f vmlinuz.tgz
file extension tar.xz, use e.g. $ tar -xJv -f vmlinuz.tar.xz
file extension tar.bz2, use e.g. $ tar -xjv -f vmlinuz.tar.bz2

Таким образом, если у вас есть доступ к утилите file (также должна работать на windows), выполните следующую команду, чтобы получить строку версии и дополнительную информацию о вашем файл с именем, например, vmlinuz-4.xy-za.

file vmlinuz-4.x.y-z-a

Другой возможностью обратного инжиниринга будет чтение всех строк двоичного файла vmlinuz-4.xy-za и grep для части возможного решения.

strings vmlinuz-4.x.y-z-a | grep 'linked,'
...