Сейчас на форуме: (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Android:Unix - как достать ядро? |
Посл.ответ | Сообщение |
|
Создано: 05 сентября 2014 11:10 · Личное сообщение · #1 Привет всем, такой вопрос возник (гугль не помог): как выцарапать ядро из распакованного образа kernel? Из того что сделано: отручен девайс, слит образ kernel.img. Из него вытащен упакованный kernel.lzma и разархивирован в kernel. В этом ядре есть некое виртуальное устройство, код драйвера/модуля которого хотелось бы изучить, но проблема в том что не могу найти начало-конец ядра или хотя бы набора модулей, которые в него вкомпилены. Может есть какие-то сигнатуры или методичка по структуре, чтобы извлечь все это? ----- старый пень ![]() |
|
Создано: 05 сентября 2014 11:13 · Личное сообщение · #2 |
|
Создано: 05 сентября 2014 11:33 · Поправил: r_e · Личное сообщение · #3 Сопутствующие строки есть в ядре. Соответственно, предполагаю что он таки вкомпилен. Чтобы была секция init.data, вероятно, нужно подгрузить ядро в ИДА. Но для начала его нужно извлечь. Потому что получившийся kernel - композитный файл. Краткий отчет binwalk Code:
Вот строка "Linux kernel version..." принадлежит ядру, но где его начало и конец? Начальный cpio архив я вырезал по маркерам 070701...TRAILER!. Но там не оказалось искомого. Предполагаю что интересное может быть внутри YAFFS, но чем его распаковать не нашел. Утилиты типа unyaffs не работают со сдампленной YAFFS. ----- старый пень ![]() |
|
Создано: 05 сентября 2014 11:34 · Личное сообщение · #4 |
|
Создано: 05 сентября 2014 11:36 · Личное сообщение · #5 |
|
Создано: 05 сентября 2014 11:47 · Поправил: reversecode · Личное сообщение · #6 |
|
Создано: 05 сентября 2014 12:02 · Личное сообщение · #7 reversecode Значит я неправильно выражаюсь ))) Есть образ раздела kernel из flash, полученный nanddump /dev/mtd/mtdx -f /mnt/sda/... или он же, получаемый dd if=/dev/mtd/mtdx of=/mnt/sda/... bs=1 Этот образ содержит строки в лодыре "Uncompressing Linux... decompressor returned an error done, booting the kernel." после которого идет lzma-compressed stream - само ядро, которое я обозвал kernel.lzma После разархивирования этого kernel.lzma в kernel я получил отчет binwalk, приведенный выше. Из него извлек initramfs.cpio (три первых строки приведенного отчета, до маркера TRAILER). Маркер конца этого архива расположен гораздо раньше чем строка "Linux kernel version". Соответственно, я и предположил, что это какое-то композитное ядро. Кстати, в скриптах обнаружилось что ранее искомый модуль подгружался динамически через insmod /system/lib/modules/module.ko, а теперь, видимо, вкомпилен статикой. Может это я перепутал bootloader, конечно. ----- старый пень ![]() |
|
Создано: 05 сентября 2014 12:10 · Личное сообщение · #8 |
|
Создано: 05 сентября 2014 12:35 · Личное сообщение · #9 |
|
Создано: 05 сентября 2014 12:40 · Личное сообщение · #10 |
|
Создано: 05 сентября 2014 12:51 · Личное сообщение · #11 |
![]() |
eXeL@B —› Вопросы новичков —› Android:Unix - как достать ядро? |