Понятно. А контрольных сумм там никаких нет? Т.е. можно WinHex'ом подправить что надо прямо в файле loading.kwi и все?
Есть ,но не всегда они критичны для системы.WinHex'ом не проблема подправить,проблема найти где и что.
---------- Добавлено в 17:01 ---------- Предыдущее сообщение было написано в 16:51 ----------
Попробовали воткнуть модуль нави.ехе с русской проши на американку, не вышло система постоянно перегружается, хотя при прямой заливке русского лодинга в американскую голову модуль нави прекрасно работает.
Вот переделанный лодинг http://4pda.ru/forum/dl/post/1109746/LOADING_NEW.rar
извлечённые прошивки http://4pda.ru/forum/dl/post/1109638/Mitsubishi.rar
Может кто посмотрит сам лодинг переделанный, подсказывают что контрольные суммы могут не соответствовать.При сравнении Нех-редактором исходного лодинга американки и переделанного,чётко виден сектор разницы, может спецы могут чего посоветовать?
Американский лодинг исходник http://files.mail.ru/SNDUTA
Элементарно проверяется.
В любом exe, не относящемся к ОС (т.е. во второстепенной прикладной программе) правится один байт (конечно, лучше знать какой, но в целом это не важно, если файл не относится к драйверам и программам, стартующим автоматом).
Если заливка правленной прошивки проходит успешно, значит никаких чексумов не проверяется и делать можно очень много чего.
Естественно, после загрузки эту программу запускать не рекомендуется, если вы правили байт в секции кода, если же в секции данных (например, символ в строке), то можно запустить и посмотреть результат. Правка секции кода предпочтительна, т.к. это исключит сразу все сомнения относительно контрольных сумм, т.к. именно эти секции подлежат защите в первую очередь.
Только нужно помнить, что некоторые регионы модулей изначально сжаты, поэтому если поправить тупо, можно не достичь нужного результата, посему (если не умеете читать прошивки без инструментов) делаем так:
- разбираем прошивку, например, Remaker'ом;
- находим секцию кода модуля JitDbgr.EXE, после работы Remaker'a это файл S000 в соотвествующем директории;
- выбираем запоминающуюся последовательность из 15-20 байтов;
- открываем прошивку (лоадинг) в хексредакторе, находим последовательность байтов, которую запомнили;
- убеждаемся, что такая последовательность в прошивке только одна (т.о. мы точно знаем, что правим в нужном месте), иначе придется выбрать другую уникальную последовательность.
правим один байт;
- льем прошивку в дивай и смотри результат заливки.
По крайней мере, вы наконец узнаете есть ли в буте проверка контральных сумм
Ясно, что делать это может только человек, представляющий, что делает, иначе вся отвественность и риски на вас, с меня взятки гладки: у меня нет такого дивая, чтоб восполнить вашу потерю, если она случится (кто понимает, - знает, что ничего плохого случиться не может, если делать как я написал).
Здравствуйте, господа. Извиняюсь, что вторгаюсь в вашу неспешную беседу.
я тут в соседней ветке вопрос задавал, но там, видимо мимо как-то прошло... да и, судя по всему, тут он более уместен.
Сильно подозреваю, что единственное препятствие для проигрывания видео с USB порта в системе исключительно програмное. Как бы это дело обойти?
Есть интерес попробовать заменить текстовые константы одного из языков на другой (т.е. поменять содержимое таблиц типа - /ScreenData/AV/GS_AV_STRING.tbl). С форматом таблицы еще разобраться можно - но что делать с loading.kwi в котором эта таблица лежит и из которого будет периодически распаковываться? Есть ли у кого опыт по засовыванию в лоадинг файла другого размера нежели оригинал - т.е. не побайтная корретировка, а именно перезапись по сути всего лоадига...
Я готов пробовать на своём девайсе ,но адекватно править не смогу.
Какой один байт править в последовательности? И сколько раз ,пока тыком не подберём КС?
Пробывал вьювером открывать прошивку выбирать файл и подставлять некоторую последовательность из него в поиск НЕХ-а, но совпадений не находит
Последний раз редактировалось PUSHIK; 23.08.2011 в 12:16.
Причина: опечатка
Viewer маленько искажает картину, например, дописывает модулю не существующий на самом деле заголовок PE. Пользоваться нужно Remaker'ом и не забывать о сжатии, присутствующем в прошивках формата B000FF.
С точки зрения стоящей задачи - разобраться есть ли проверка чексумм, - безразлично какой байт править. После исправления любого байта контрольная сумма модуля изменится и загрузчик должен на это как-то отреагировать при попытке заливки, если такие проверки в нем заложены.
Вот, например, кусок loading.kwi, который вы выкладывали на 4pda. Это фрагмент именно секции кода файла JitDbgr.exe. Я специально выбрал место, где лежат простые строки в уникоде.
Можете пропатчить их, как вам нравится (достаточно и одну букву, патч в этих строках абсолютно безопасен.) и попытайтесь залить прошивку в дивайс. Если не примет, значит проверки есть, если примет, значит руки для дальнейшего ковыряния развязаны, что в этом случае делать дальше я писал пару дней назад в личке Ежику Пыху.
Здесь лишь замечу, что для инъекции можно воспользоваться тем обстоятельством, что донорский navi.exe по размеру меньше того, что лежит в этой прошивке.
Успехов.
ЗЫ: И где тут кнопка "Изменить"?
Последний раз редактировалось Mi81; 23.08.2011 в 22:23.
Причина: Пришлось писать новую месагу из-за отсутствия кнопки
Моя вина.
Я почему-то понадеялся, что вы, прочитав информацию на 4pda, уже знаете о существовании стандартных контрольных сумм записей формата B000FF и смените ее самостоятельно. Речь идет о двенадцати байтах заголовка каждой записи (три поля по 4 байта каждое), которые представляют собой следующую информацию:
Код:
Record Address 4 Physical starting address of data record.
Record length 4 Length of record data, in bytes.
Record checksum 4 Signed 32-bit sum of record data bytes.
Соответственно, изменив даже один байт вы должны пересчитать Record checksum для этого региона и изменить ее.
Физически в прошивке этот заголовок лежит непосредственно перед самим регионом, который описывает.
Я сейчас на работе и под руками нет вашей прошивки. Вечером, если надо, покажу где это и как это.
Для работы по-прежнему достаточно Remaker'а и WinHex'a.
Это можно. Имея немного времени для чтения, вы бы могли сделать это проще, используя лишь карту прошивки, полученную из Remaker'a, но по-скольку нужных знаний у вас пока нет, пойдем окружным путем, как говорят в армии, по разделениям.
Работать будем с той извлеченной из контейнера прошивкой, которая прилеплена в аттаче (она, как вы помните лежит в контейнере LOADING.kwi по смещению 0х0006F000) и самим LOADING.kwi.
Для работы нам понадобятся Remaker for WinCE5 и WinHex, если не знаете, где взять последний могу выложить.
И так:
Открываем прошивку (NK.bin) в Remaker'e (в меню левой панели File -> Open ROM) и, когда она загрузится, выполняем в меню правой панели View -> Map Project NB0. Эти действия приведут к тому, что в директории, где лежит Remaker, появится папка NB0, в которой будет находиться разобранная на составляющие части прошивка, ее карта - MAP.txt и много других полезных файлов (Рис. 1).
Запускаем WinHex и открываем в нем наш контейнер LOADING.kwi, затем находим в папке Remaker'a файл S000 в директории \NB0\OUT\MODULES\JitDbgr.EXE\ и тоже открываем его в WinHex'е - это и есть секция (регион, если говорить в терминах прошивок) кода файла JitDbgr.exe в том виде, в каком она лежит в прошивке (Рис. 2).
В WinHex'e переходим на закладку S000 и выделяем мышкой первые шестнадцать байт (можно и не 16, важно просто что бы они были уникальными) и копируем их в буфер обмена: Edit -> Copy Block -> Hex Values.
Переходим на закладку LOADING.KWI и находим начало нужного региона, выполнив Search -> Find Hex Values... В поле ввода открывшегося диалога вставляем из буфера обмена сохраненную последовательность из 16 байтов и нажимаем кнопку OK (Рис. 4).
После выполнения этих действий курсор должен установиться на начало нужного региона нужного файла (смещение 0х00E20A8F). Однако, если выполнить повторный поиск (нажав клавишу F3), мы убедимся, что найдена еще одна такая же последовательность, и еще одна, и еще. Вывод: к сожалению, последовательность оказалась не уникальной. Такую проверку нужно проводить всегда, чтобы быть уверенным, что найден именно тот фрагмент, который нужен.
Возвращаемся на закладку S000 и выбираем другую последовательность байтов для поиска, например, следующие 16 байт и копируем их в буфер обмена. Снова идем на закладку LOADING.KWI и повторяем попытку поиска, как описано выше (Рис 5). Нажатием F3 убеждаемся, что такой последовательности в контейнере больше нет и это именно то, что надо.
И так, нужная последовательность найдена по смещению 0x00E96613, но ведь это вторые 16 байт из файла S000, значит сам регион начинается по смещению 0x00E96613 - 0х00000010 = 0х00E96603. Рассмотрим заголовок региона, те 12 байт, что предшествуют собственно региону и обведены на Рис.5 красной линией. Первые четыре байта это смещение региона 0х8E82C000 они нас в данном случае не интересуют. Вторые - длина региона 0x0003EFFC. Третьи - его контрольная сумма0x0188EB68. Обратите внимание, что чтение выполняется справа налево.