Я уже пробовал распаковывать, gzip и все другие решения, которые появляются как результаты Google, и они не работают для меня.
Чтобы получить только поиск изображения для подписи GZ -
1f 8b 08 00
.> od -A d -t x1 vmlinuz | grep '1f 8b 08 00' 0024576 24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45
поэтому изображение начинается с
24576+8 => 24584
. Затем просто скопируйте изображение с точки и распакуйте его -> dd if=vmlinuz bs=1 skip=24584 | zcat > vmlinux 1450414+0 records in 1450414+0 records out 1450414 bytes (1.5 MB) copied, 6.78127 s, 214 kB/s
Получил эти инструкции дословно с форума онлайн: http://www.codeguru.com/forum/showthread.php?t=415186
Этот процесс не работает для меня и в итоге выдает ошибки, в которых говорится, что файл не найден 0024576 и все последующие номера.
Как мне продолжить извлечение vmlinux из vmlinuz?
Спасибо.
РЕДАКТИРОВАНИЕ: Это вопрос обратной инженерии. У меня нет доступа к дистрибутиву, чтобы установить любой RPM или перекомпилировать. Я начинаю только с vmlinuz.
источник
Ответы:
Возможно, вы не поняли, что имел в виду автор этого поста.
vmlinuz
Файл содержит другие вещи , кроме сжата GZIP содержания, так что вам нужно , чтобы узнать, где начинается с gzip'нутым контентом. Для этого используйте:Это показывает, где в этом файле вы можете найти заголовок gzip. Вывод выглядит так:
Это означает, что в
0024576
(по крайней мере, для автора поста вашvmlinuz
файл может быть совершенно другим) в файле вы найдете двоичные значения "24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45
". Вы ищете1f 8b 08 00
, который можно найти начиная с символа 9 или,0024576 + 8
начиная с (начинайте считать с 0)= 24584
.Теперь, когда вы знаете, где начинается сжатый контент (в позиции
24584
), вы можете использовать егоdd
для распаковки и разархивирования. Для этого используйте:Первая команда будет искать эту позицию и копировать все в стандартный вывод.
zcat
затем распакует все, что получает от stdin, и выведет несжатую строку в stdout. Затем>
перенаправитzcat
вывод в новый файл с именемvmlinux
.источник
od
выходных данных. Используйте bgrep для поиска1f8b0800
. 2) Ядро сжимается с использованием другого алгоритма. Попробуйтеfd377a585a00
для xz или425a6839
для bzip2 .Исходники ядра теперь содержат скрипт для этого
extract-vmlinux
. Вам не нужно кататься самостоятельно.Смотрите этот так ответ .
источник
apt-file search extract-vmlinux
предоставляет несколько пакетов заголовков ядра linux иlocate extract-vmlinux
приводит к нескольким попаданиям на мою локальную машину с Ubuntu 18.04:/usr/src/linux-headers-4.15.0-33/scripts/extract-vmlinux
хотя вPATH
этом ничего нет .На самом деле, перед генерацией
vmlinuz
файла большинство символов удаляются. Таким образом , вы не можете восстановить истинныеvmlinux
изvmlinuz
, файл не будет столь же полезен для отладки.источник
Я столкнулся с простой проблемой - ищу правильную версию vmlinux для сбоя. Вместо того, чтобы пытаться распаковать vmlinuz в vmlinux.
Лучшее решение: установите RPM:
kernel-debuginfo
этот RPM содержит правильный файл vmlinux.Обратите внимание на название rpm, есть несколько похожих (сбивающих с толку) имен. Должен быть:
kernel-debuginfo-$(version).rpm
источник
Современные ядра не всегда (на самом деле не всегда) сжимаются gzip. Они могут использовать bzip2 или LZMA. Быстрый веб-поиск не помог мне найти магические строки для этих методов сжатия - вам лучше проверить несколько образов ядра, чтобы найти инвариантный заголовок, который включает код распаковки.
источник
Линии декомпрессии выше работали для меня и, конечно, ядро было удалено. Поэтому никакой хорошей информации там нет.
Если вам нужно внести изменения в ваше старое ядро, например, поставить его в отладочный
uname -r
режим , используйте для получения ревизии вашего ядра и получения его источника:Источник будет в
/usr/src/linux...
cd
дереве исходников и:Это попытается найти файл, содержащий конфигурацию для работающего в данный момент ядра - обычно
и использовать его для этой сборки, воссоздав тем самым работающее ядро.
Постройте это так, как вы хотите; иметь доступ к незарезанному ядру по мере необходимости.
Снаряды выше, вероятно, не найдут магический номер gzip из-за расстояния. Да, они по-прежнему сжимаются так же, хотя я пишу через год после первоначального обсуждения. Отправьте вывод на
less
и найдите1f 8b
или даже1f
. Проверьте остальные байты вручную, чтобы определить соответствие и убедиться, что у вас есть первый экземпляр. Используйте найденное смещение, помня, что оно десятичное.источник