Автор Тема: Как распаковать uImage  (Прочитано 3812 раз)

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Как распаковать uImage
« : Сентябрь 17, 2015, 08:19:05 pm »
Сжатое ядро представляет собой загрузчик и распаковщик, за которым следует собственно сжатый алгоритмом zlib vmlinux (вопреки распространенному мнению, bzImage — это не ядро, сжатое bzip’ом, а сжатое ядро, которое можно загружать в несвязанные между собой области памяти), и необходимо отделить сжатое ядро от загрузчика.
Для начала берете файл приаттаченный в теме и компилируете.
$ gcc -o binoffset binoffset.c
Так как ядро запаковано нам нужно найти заголовок gzip, который начинается с байт 1f 8b 08 00
$ /binoffset /uImage 0x1f 0x8b 0x08 00 2>/dev/null
16807
Получили смещение 16807
Теперь «вытащим» из uImage сжатое ядро и распакуем его:


$ dd if=/uImage skip=16807 bs=1|gzip -d >uImage.unpack
Теперь можно поискать в ядре нужные строки
$ strings uImage.unpack |grep gcc

$Linux version 3.4.39 (allwinner@steven) (gcc version 4.6.3 20120201 (prerelease) (crosstool-NG linaro-1.13.1-2012.02-20120222 - Linaro GCC 2012.02) ) #41 SMP PREEMPT Sun Jun 21 13:09:26 HKT 2015




« Последнее редактирование: Сентябрь 17, 2015, 09:43:46 pm от tracert »