Сейчас на форуме: Lohmaty (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Разобрать загрузчик. Как ? |
Посл.ответ | Сообщение |
|
Создано: 03 ноября 2018 00:17 · Поправил: tinycat · Личное сообщение · #1 Приветствую уважаемое коммьюнити. У меня возник вопрос. Есть загрузчик для роутера на RT5350. Называется Breed. Всем хорошо бы, да одно НО. Написан на ядреном китайском языке. Что можно в такой ситуации сделать, можно ли как-то заменить китайские иероглифы ? Прошу совета! Китаец на контакт не идет и никак не отзывается. Хотя народ считает что он просто украл исходники GPL. Заранее спасибо. Binwalk дает такой вот отчет: Code:
![]() Добавлено спустя 59 минут зажаты lzma следующие файлы (в прикрепленных) ![]() ![]() |
|
Создано: 03 ноября 2018 09:29 · Поправил: f13nd · Личное сообщение · #2 Проц MIPS little endian, загружается по 80200000, вот твой lzma-заголовок: Code:
Вырезаю, в отдельный файл, 7zip вываливает файл 260 690 байт. Загружаю по 80100000. Примерно по 8013BB1C находится длинная таблица с адресами функций (которые с 80100000 по 80128CC8, 2/3 файла примерно), а по 8012E5CC - таблица с адресами интересующих тебя строчек с китайским языком. Архив с частично разобраной прошивкой Отсюда два варианта: либо переводить как русифекализаторы игрушек 90х годов, пытаясь вписать строчку в отведенное пространство, либо дизассемблировать, перевести, и собрать обратно. Если не всю прошивку целиком, то все, что касается адресов (примерно с 80128CC8 до потолка). Второе кстати вполне осуществимо, останется только найти где прошивка сами эти таблицы адресует и ручками уже исправить. Добавлено спустя 16 минут tinycat пишет: Хотя народ считает что он просто украл исходники GPL Выглядит так же смешно, как и звучит. ----- 2 оттенка серого ![]() |
|
Создано: 03 ноября 2018 14:59 · Личное сообщение · #3 f13nd огромное спасибо за отклик. Может вы подробнее раскажете про "второй вариант". Этот загрузчик разбирается в линуксе на файлы (я прикрепил), там внутри html-размеченные страницы с иероглифами. Если иероглифы заменить на переводы, и зажать обратно - с какими проблемами можно столкнуться ? Прошу заранее прощения, если задаю глупые вопросы. ![]() ![]() |
|
Создано: 03 ноября 2018 15:23 · Поправил: f13nd · Личное сообщение · #4 tinycat пишет: Этот загрузчик разбирается в линуксе на файлы (я прикрепил), там внутри html-размеченные страницы с иероглифами. Плохо себе представляю как. Я бы загрузил в иде со смещения 28CC8 и по адресу 80128CC8 (чтоб адреса программной части ида воспринимала как константы, это сильно упросит жизнь), раскидал бы на дворды, переработал это в fasm-исходник (даже без всяких костылей, айбиэм писи тоже литтл эндиан) Code:
Нашел бы нужные фрагменты html, которые надо перенести, вынес бы их во внешние двоичные файлы типа '13300C.bin' и подключил бы вместо них Code:
Потом перед второй таблицей Code:
Если бы потребовалось, вынес бы пару этих файлов в конец (если перевод окажется хоть на 1 байт длинней, тогда фасм ругнется на аут оф рендж) и пересобрал. Все таблицы должны остаться на своем месте, все адреса будут верными. Это наверное самый правильный способ как избежать возможных проблем. ----- 2 оттенка серого ![]() |
|
Создано: 04 ноября 2018 11:09 · Личное сообщение · #5 |
|
Создано: 04 ноября 2018 11:30 · Личное сообщение · #6 |
|
Создано: 17 ноября 2018 22:20 · Личное сообщение · #7 f13nd: чувствуется в вашем решении простота ![]() Мне да этого еще ох как далеко... 1)Первым делом, какой выбирать тип процессора при загрузке ? mipsl ? 2)Какие адреса нужно указывать в табличке разметки памяти (на картинке) ? 3)Что значит "раскидать на dword-ы" ? 4)Как искать нужные фрагменты html, которые надо перенести ? Копируя в поиск IDA сами иероглифы через буфер обмена ? ![]() ![]() |
|
Создано: 17 ноября 2018 22:58 · Поправил: f13nd · Личное сообщение · #8 tinycat пишет: 1)Первым делом, какой выбирать тип процессора при загрузке ? mipsl ? mipsl tinycat пишет: 2)Какие адреса нужно указывать в табличке разметки памяти (на картинке) ? ROM section: ROM start address: 0x80128CC8 Input file: Loading address: 0x80128CC8 File offset: 0x28CC8 tinycat пишет: 3)Что значит "раскидать на dword-ы" ? D + D + D я обычно питоновым скриптом это делаю, на хоткей alt+2 авторан-скрипт биндит вот это: Code:
Зажимаю alt+2 и до победного (смотри чтоб адреса были кратны 4) Авторанится вот так: Code:
Потом достаточно файл открыть через контекстное меню - IDA70. tinycat пишет: 4)Как искать нужные фрагменты html, которые надо перенести ? Копируя в поиск IDA сами иероглифы через буфер обмена ? Открыть в нех-редакторе, искать теги. Если внутри будет содержимое в неизвестной кодировке (любые кракозябры кроме аглицкого), то такой фрагмент надо переводить. ----- 2 оттенка серого ![]() |
|
Создано: 17 ноября 2018 23:30 · Личное сообщение · #9 |
|
Создано: 17 ноября 2018 23:49 · Личное сообщение · #10 |
|
Создано: 18 ноября 2018 00:10 · Поправил: tinycat · Личное сообщение · #11 |
|
Создано: 18 ноября 2018 00:29 · Личное сообщение · #12 tinycat пишет: Интересно, 7 версия действительно сама распознала и тип бинарника и адреса и даже IDAPython установила. Проц распознал ты сам, я просто прочитал первое сообщение внимательно) Базовый адрес прошивки обычно несложно выяснить глядя на нее. Идапитон вроде бы есть в комплекте, сам питон у меня изначально был установлен. Размер это при сохранении файла пункт 'deflate', подождав лишние полсекунды получаешь файл в несколько раз меньше. ----- 2 оттенка серого ![]() |
|
Создано: 18 ноября 2018 03:52 · Поправил: tinycat · Личное сообщение · #13 f13nd: не могу импортировать ключ. В реестре всего лишь создаются разделы. Как должен этот параметр выглядеть для ручного ввода ? Мой вариант не срабатывает: Code:
Потом этот скрипт должен проявится в меню скриптов IDA ? Или его нужно вручную прописывать ? ![]() |
|
Создано: 18 ноября 2018 04:51 · Поправил: f13nd · Личное сообщение · #14 tinycat пишет: Потом этот скрипт должен проявится в меню скриптов IDA ? Или его нужно вручную прописывать ? Этот ключ добавляет в контекстное меню любых файлов (правая кнопка в файловом менеджере) пункт IDA70, которым файл откроется сразу с запущенным скриптом autorun.py. По-моему форумный движок съел маскирующие бекслеши. Должно быть так: ![]() И сразу держи ----- 2 оттенка серого ![]() |
|
Создано: 18 ноября 2018 05:22 · Поправил: tinycat · Личное сообщение · #15 Cпасибо, читал-читал про IDAPython и правильное прописывание команд, а оказывается форум съел символы ![]() Так мне скриптом обрабатывать i64-файл, правильно я понимаю ? Что должно получится в результате этой процедуры, набор ![]() ![]() |
|
Создано: 18 ноября 2018 11:54 · Личное сообщение · #16 tinycat пишет: Что с ними необходимо делать дальше ? Там дальше про фасм было ----- 2 оттенка серого ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Разобрать загрузчик. Как ? |