LINUX.ORG.RU

Бинарный патч ядра

 , , ,


0

2

Вводные: ядро от стоковой Android прошивки устройства на MediaTek. Исходников нет. Цель: пропатчить уже собранное ядро, чтобы оно не забирало bootargs из device tree или загрузчика, но использовало свои из header.

Маловероятно, но есть тут кто шарит за подобное? Может есть у кого опыт. Или, может, кто-то знает профильные форумы\статьи.



Последнее исправление: Retard (всего исправлений: 3)

Ну есть утилита mkimage из комплекта u-boot и кажется аналогичная утилита для образов андроид-ядер. Может там и командная строка задаётся.

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

Нужно не задать. А удалить. Задать я могу и без всяких утилит тремя способами. В разобраном буте в заголовке, в декомпилированном device tree или hex редактором в собраном буте. Цель же избавиться от параметров, которые подсовывает загрузчик (в данном случае lk).

Retard
() автор топика
Ответ на: комментарий от anonymous

Пропатчить lk не всегда есть возможность. Он может попадать под chain of trust. Ядро же, с разблокированным загрузчиком можно вертеть как угодно. Хотелось бы иметь универсальный вариант.

Retard
() автор топика

Странный вопрос. Если на него отвечать кратко, то: найди в скомпилированном коде (можно на примере какого-нить похожего ядра с известным исходником) нужные места с помощью дизассемблера, затем найди их же (выглядеть будут так же или похоже) в своём из прошивки, замени нежелательный код на NOP-ы. Возможно придётся какие-нить контрольные суммы или подписи где-то ещё заменить. Но по-моему это всё и так очевидно, а более подробно это будет если я всё это за тебя сделаю и дам решение, чего разумеется не планируется и вряд ли ты на это рассчитывал.

firkax ★★★★★
()
Ответ на: комментарий от firkax

…ты на это рассчитывал.

Я расчитывал на конкретику. Воду я и сам понимаю.

…нужные места… …нежелательный код… …какие-нить контрольные суммы…

Как раз таки для такой воды и спрашиваю.

Логика подсказывает, что паттерн проверки флагов *_CMDLINE* схож не только у «похожего ядра с известным исходником», но и в принципе, у примерно близких циферных версий ядра. Возможно, есть хоть один человек/статья на белом свете, что может подсказать, например, паттерны бинарного поиска для прямого патча или, например, возможен ли такой патчинг в принципе. Люди иногда умеют делиться опытом и я был бы благодарен за него в данной теме. Наступать на несколько дней поиска «нужных мест» с «нежелательным кодом», а потом, возможно, упереться в «какие-нить контрольные суммы», чтобы в итоге оказалось, что это и в теории не заведеться никогда. Я откровенно не хочу. Никто не ответит - и ладно. Ответит - классно, можно будет пробовать. Надеюсь, ты правильно увидел акценты.

Retard
() автор топика
Ответ на: комментарий от Retard

Возможно, есть хоть один человек/статья на белом свете, что может подсказать, например, паттерны бинарного поиска

Чтобы такой паттерн узнать, надо как раз сделать то что я написал. Вряд ли кто-то хотел патчить именно это место, готового паттерна ни у кого скорее всего нет. Да и не факт что там удобно бинарным поиском. Названия функций то обычно видны снаружи, ищи это место в исходнике, затем ищи эту же функцию в бинарнике, и изучай дамп дизассемблера.

В том и дело, что следующая ступень конкретики тут это «сделайте всё за меня», промежуточных нет.

firkax ★★★★★
()

Выложи ядро куда-нибудь. Дай его посмотреть. В обще есть у меня есть опыт в таких движениях. Тогда ,возможно, подскажу.

anonymous
()

Возьми Ghidra, и открой через нее бинарь. Она тебе все по полочкам разложит, нужное место найдешь за один вечер.

Xintrea ★★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария