eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: prorokk, SL22 (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Разобрать загрузчик. Как ?
Посл.ответ Сообщение

Ранг: 1.6 (гость)
Статус: Участник

Создано: 3 ноября 2018 00:17 · Поправил: tinycat New!
Цитата · Личное сообщение · #1

Приветствую уважаемое коммьюнити. У меня возник вопрос. Есть загрузчик для роутера на RT5350. Называется Breed. Всем хорошо бы, да одно НО. Написан на ядреном китайском языке. Что можно в такой ситуации сделать, можно ли как-то заменить китайские иероглифы ? Прошу совета! Китаец на контакт не идет и никак не отзывается. Хотя народ считает что он просто украл исходники GPL.
Заранее спасибо.
Binwalk дает такой вот отчет:
Code:
  1. 0_0x0_uImage header, header size: 64 bytes, header CRC: 0x871007F5, created: 2017-12-26 15:09:30, image size: 82882 bytes, Data Address: 0x80200000, Entry Point: 0x80200000, data CRC: 0x8F7A0FCE, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: none, image name: "Breed for RT5350"
  2. 7008 _0x1B60_Copyright string: "Copyright (C) 2017 HackPascal <hackpascal@gmail.com>"
  3. 7428_0x1D04_LZMA compressed data, properties: 0x6D, dictionary size: 33554432 bytes, uncompressed size: 260690 bytes


{ Атач доступен только для участников форума } - breed-rt5350-hame-a5-r1163.bin

Добавлено спустя 59 минут
зажаты lzma следующие файлы (в прикрепленных)

{ Атач доступен только для участников форума } - breed_extract.zip


Ранг: 200.2 (наставник)
Статус: Участник

Создано: 3 ноября 2018 09:29 · Поправил: f13nd New!
Цитата · Личное сообщение · #2

Проц MIPS little endian, загружается по 80200000, вот твой lzma-заголовок:
Code:
  1. seg000:80201CC4 6D 00 00 00                 .word 0x6D
  2. seg000:80201CC8 02 52 FA 03                 .word 0x3FA5202
  3. seg000:80201CCC 00 00 00 00                 .word 0
  4. seg000:80201CD0 00 00 00 24                 .word 0x24000000

Вырезаю, в отдельный файл, 7zip вываливает файл 260 690 байт. Загружаю по 80100000. Примерно по 8013BB1C находится длинная таблица с адресами функций (которые с 80100000 по 80128CC8, 2/3 файла примерно), а по 8012E5CC - таблица с адресами интересующих тебя строчек с китайским языком.
Архив с частично разобраной прошивкой --> Link <-- (ida70 x64).
Отсюда два варианта: либо переводить как русифекализаторы игрушек 90х годов, пытаясь вписать строчку в отведенное пространство, либо дизассемблировать, перевести, и собрать обратно. Если не всю прошивку целиком, то все, что касается адресов (примерно с 80128CC8 до потолка). Второе кстати вполне осуществимо, останется только найти где прошивка сами эти таблицы адресует и ручками уже исправить.

Добавлено спустя 16 минут
tinycat пишет:
Хотя народ считает что он просто украл исходники GPL

Выглядит так же смешно, как и звучит.

Ранг: 1.6 (гость)
Статус: Участник

Создано: 3 ноября 2018 14:59 New!
Цитата · Личное сообщение · #3

f13nd огромное спасибо за отклик.
Может вы подробнее раскажете про "второй вариант".
Этот загрузчик разбирается в линуксе на файлы (я прикрепил), там внутри html-размеченные страницы с иероглифами. Если иероглифы заменить на переводы, и зажать обратно - с какими проблемами можно столкнуться ?
Прошу заранее прощения, если задаю глупые вопросы.


Ранг: 200.2 (наставник)
Статус: Участник

Создано: 3 ноября 2018 15:23 · Поправил: f13nd New!
Цитата · Личное сообщение · #4

tinycat пишет:
Этот загрузчик разбирается в линуксе на файлы (я прикрепил), там внутри html-размеченные страницы с иероглифами.

Плохо себе представляю как. Я бы загрузил в иде со смещения 28CC8 и по адресу 80128CC8 (чтоб адреса программной части ида воспринимала как константы, это сильно упросит жизнь), раскидал бы на дворды, переработал это в fasm-исходник (даже без всяких костылей, айбиэм писи тоже литтл эндиан)
Code:
  1. org 0x80100000
  2. file 'unpacked.bin':0,0x28CC8
  3. ...

Нашел бы нужные фрагменты html, которые надо перенести, вынес бы их во внешние двоичные файлы типа '13300C.bin' и подключил бы вместо них
Code:
  1. a13300C: file '13300C.bin'

Потом перед второй таблицей
Code:
  1. repeat 0x80139E8C - $
  2. db 0
  3. end repeat

Если бы потребовалось, вынес бы пару этих файлов в конец (если перевод окажется хоть на 1 байт длинней, тогда фасм ругнется на аут оф рендж) и пересобрал. Все таблицы должны остаться на своем месте, все адреса будут верными. Это наверное самый правильный способ как избежать возможных проблем.

| Сообщение посчитали полезным: Jupiter, HandMill, tinycat



Ранг: 581.6 (!)
Статус: Модератор
Research & Development

Создано: 4 ноября 2018 11:09 New!
Цитата · Личное сообщение · #5

f13nd
Хороший вариант, к тому же поддерживает допиливание в будущем.


Ранг: 200.2 (наставник)
Статус: Участник

Создано: 4 ноября 2018 11:30 New!
Цитата · Личное сообщение · #6

Jupiter пишет:
Хороший вариант, к тому же поддерживает допиливание в будущем.

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

Ранг: 1.6 (гость)
Статус: Участник

Создано: 17 ноября 2018 22:20 New!
Цитата · Личное сообщение · #7

f13nd: чувствуется в вашем решении простота
Мне да этого еще ох как далеко...
1)Первым делом, какой выбирать тип процессора при загрузке ? mipsl ?
2)Какие адреса нужно указывать в табличке разметки памяти (на картинке) ?
3)Что значит "раскидать на dword-ы" ?
4)Как искать нужные фрагменты html, которые надо перенести ? Копируя в поиск IDA сами иероглифы через буфер обмена ?

{ Атач доступен только для участников форума } - trans.jpg


Ранг: 200.2 (наставник)
Статус: Участник

Создано: 17 ноября 2018 22:58 · Поправил: f13nd New!
Цитата · Личное сообщение · #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:
  1. import idaapi
  2. ida_idaapi.set_script_timeout(1)
  3. pos = ida_bytes.next_unknown(idc.get_screen_ea(),BADADDR)
  4. idc.create_data(pos,FF_DWORD,4,BADADDR)
  5. idc.jumpto(pos)

Зажимаю alt+2 и до победного (смотри чтоб адреса были кратны 4)
Авторанится вот так:
Code:
  1. Windows Registry Editor Version 5.00
  2.  
  3. [HKEY_CLASSES_ROOT\*\shell\IDA70]
  4.  
  5. [HKEY_CLASSES_ROOT\*\shell\IDA70\command]
  6. @="D:\coding\debugger\IDA 7.0\ida64.exe -S"D:\coding\scripts\ida\autorun.py" "%1""

Потом достаточно файл открыть через контекстное меню - IDA70.

tinycat пишет:
4)Как искать нужные фрагменты html, которые надо перенести ? Копируя в поиск IDA сами иероглифы через буфер обмена ?

Открыть в нех-редакторе, искать теги. Если внутри будет содержимое в неизвестной кодировке (любые кракозябры кроме аглицкого), то такой фрагмент надо переводить.

Ранг: 1.6 (гость)
Статус: Участник

Создано: 17 ноября 2018 23:30 New!
Цитата · Личное сообщение · #9

Выбрасывает с ошибкой Virtual Array: Adress space limit is reached
Что указывать в ROM size и Loading Size ?


Ранг: 200.2 (наставник)
Статус: Участник

Создано: 17 ноября 2018 23:49 New!
Цитата · Личное сообщение · #10

tinycat пишет:
Что указывать в ROM size и Loading Size ?

Да ида там сама Loading size выберет (0x3FA52), когда смещение подставишь, максимум перенести его останется в ROM size.

как-то так примерно http://sendfile.su/1456007

Ранг: 1.6 (гость)
Статус: Участник

Создано: 18 ноября 2018 00:10 · Поправил: tinycat New!
Цитата · Личное сообщение · #11

ага, а IDA то у меня 5-й версии Может как раз в этом дело, попробую обновить сча. Заодно и питон установлю. Спасибо!
Интересно, 7 версия действительно сама распознала и тип бинарника и адреса и даже IDAPython установила. Только что размер не порадовал


Ранг: 200.2 (наставник)
Статус: Участник

Создано: 18 ноября 2018 00:29 New!
Цитата · Личное сообщение · #12

tinycat пишет:
Интересно, 7 версия действительно сама распознала и тип бинарника и адреса и даже IDAPython установила.

Проц распознал ты сам, я просто прочитал первое сообщение внимательно) Базовый адрес прошивки обычно несложно выяснить глядя на нее. Идапитон вроде бы есть в комплекте, сам питон у меня изначально был установлен. Размер это при сохранении файла пункт 'deflate', подождав лишние полсекунды получаешь файл в несколько раз меньше.

Ранг: 1.6 (гость)
Статус: Участник

Создано: 18 ноября 2018 03:52 · Поправил: tinycat New!
Цитата · Личное сообщение · #13

f13nd: не могу импортировать ключ. В реестре всего лишь создаются разделы. Как должен этот параметр выглядеть для ручного ввода ? Мой вариант не срабатывает:
Code:
  1. Windows Registry Editor Version 5.00
  2.  
  3. [HKEY_CLASSES_ROOT\*\shell\IDA70]
  4.  
  5. [HKEY_CLASSES_ROOT\*\shell\IDA70\command]
  6. @="C:\Program Files\IDA 7.0\ida64.exe -S"C:\python\autorun.py" "%1""

Потом этот скрипт должен проявится в меню скриптов IDA ? Или его нужно вручную прописывать ?


Ранг: 200.2 (наставник)
Статус: Участник

Создано: 18 ноября 2018 04:51 · Поправил: f13nd New!
Цитата · Личное сообщение · #14

tinycat пишет:
Потом этот скрипт должен проявится в меню скриптов IDA ? Или его нужно вручную прописывать ?

Этот ключ добавляет в контекстное меню любых файлов (правая кнопка в файловом менеджере) пункт IDA70, которым файл откроется сразу с запущенным скриптом autorun.py. По-моему форумный движок съел маскирующие бекслеши. Должно быть так:

И сразу держи --> Link <--, а то мало ли. 'scripts_path' замени в autorun.py на свой.

Ранг: 1.6 (гость)
Статус: Участник

Создано: 18 ноября 2018 05:22 · Поправил: tinycat New!
Цитата · Личное сообщение · #15

Cпасибо, читал-читал про IDAPython и правильное прописывание команд, а оказывается форум съел символы
Так мне скриптом обрабатывать i64-файл, правильно я понимаю ? Что должно получится в результате этой процедуры, набор кусков файлов ? Что с ними необходимо делать дальше ? (как в той сказке "и что, уже можно есть?"


Ранг: 200.2 (наставник)
Статус: Участник

Создано: 18 ноября 2018 11:54 New!
Цитата · Личное сообщение · #16

tinycat пишет:
Что с ними необходимо делать дальше ?

Там дальше про фасм было --> Link <--
 eXeL@B —› Вопросы новичков —› Разобрать загрузчик. Как ?

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS