Сейчас на форуме: (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Android:Unix - как достать ядро?
Посл.ответ Сообщение

Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 05 сентября 2014 11:10
· Личное сообщение · #1

Привет всем, такой вопрос возник (гугль не помог): как выцарапать ядро из распакованного образа kernel?
Из того что сделано: отручен девайс, слит образ kernel.img. Из него вытащен упакованный kernel.lzma и разархивирован в kernel.
В этом ядре есть некое виртуальное устройство, код драйвера/модуля которого хотелось бы изучить, но проблема в том что не могу найти начало-конец ядра или хотя бы набора модулей, которые в него вкомпилены. Может есть какие-то сигнатуры или методичка по структуре, чтобы извлечь все это?

-----
старый пень





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 сентября 2014 11:13
· Личное сообщение · #2

модуль точно вкомпилен? дай ядро

Добавлено спустя 7 минут
секция init.data должна быть



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 05 сентября 2014 11:33 · Поправил: r_e
· Личное сообщение · #3

Сопутствующие строки есть в ядре. Соответственно, предполагаю что он таки вкомпилен.
Чтобы была секция init.data, вероятно, нужно подгрузить ядро в ИДА. Но для начала его нужно извлечь. Потому что получившийся kernel - композитный файл.
Краткий отчет binwalk
Code:
  1. 131400            0x20140         ASCII cpio archive (SVR4 with no CRC), file name: "lib" 
  2. 131500            0x20100         ASCII cpio archive (SVR4 with no CRC), file name: "sbin" 
  3. 131600            0x20200         ASCII cpio archive (SVR4 with no CRC), file name: "sbin/adbd" 
  4. ...
  5. 5950000           0x5ACE00        Linux kernel version ... PDT 2014"
  6. ...
  7. 8266000           0x7E2000        YAFFS filesystem

Вот строка "Linux kernel version..." принадлежит ядру, но где его начало и конец?

Начальный cpio архив я вырезал по маркерам 070701...TRAILER!. Но там не оказалось искомого.
Предполагаю что интересное может быть внутри YAFFS, но чем его распаковать не нашел. Утилиты типа unyaffs не работают со сдампленной YAFFS.

-----
старый пень





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 сентября 2014 11:34
· Личное сообщение · #4

значит это не ядро, это ФС, ее нужно монтировать в линуксе и извлекать уже всю фс



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 05 сентября 2014 11:36
· Личное сообщение · #5

reversecode
Нет, ФС само собой вырезал и проверил. Но вот строка про ядро, на мой взгляд, принадлежит именно бинарю ядра.

-----
старый пень





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 сентября 2014 11:47 · Поправил: reversecode
· Личное сообщение · #6

у меня нет никаких андроидных ядер под рукой что бы проверить
не бывает никаких композитивных, есть img это файловая система иногда с самим ядром внутри
есть ядро, оно тупо упаковано само по себе
ядро ELF



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 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, конечно.

-----
старый пень





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 сентября 2014 12:10
· Личное сообщение · #8

http://www.aleph1.co.uk/lurker/message/20110924.221226.643d5f26.ja.html
возьми нормально смонтируй все и вытяни человеческие файлы,
и никогда не пользуйся binwalk



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 05 сентября 2014 12:35
· Личное сообщение · #9

reversecode
Ты думаешь что ядреный модуль будет работать с этим образом, если остальные YAFFS утилиты не распознают его?

-----
старый пень





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 сентября 2014 12:40
· Личное сообщение · #10

это то такой специфический кастомный андроид из криптоком телефона, у которого даже своя фс?
какие еще остальные утилиты? под винду небось? установи обычный линукс и играйся в нём



Ранг: 72.4 (постоянный), 33thx
Активность: 0.050.03
Статус: Участник

Создано: 05 сентября 2014 12:51
· Личное сообщение · #11

Выложите дамп, пожалуйста. Можно обрезанный.


 eXeL@B —› Вопросы новичков —› Android:Unix - как достать ядро?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати