GSM Форум - GSMForum.SU  

Вернуться   GSM Форум - GSMForum.SU > Мобильные телефоны > Китайские телефоны на базе процессоров MTK, ADI, SPD, AGER, TI и SKY > Китайские телефоны - для новичков

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

Ответ
 
Опции темы Оценить тему Опции просмотра
Старый 27.11.2012, 23:38   #1
troosh
Новичок
 
Регистрация: 27.01.2009
Адрес: Москва
Сообщений: 5
Поблагодарил: 12
Поблагодарили один раз в одном сообщении
Репа: 0
Цитата:
Сообщение от KVladG Посмотреть сообщение
Прочитал Ваш Топ. Тоже хочу поработать на IDA с прошивками. Не сообщите, как Ваши успехи в этом направлении. Я загружал прошивки, но дезасс. запрашивает стартовый адрес для работы, а я не знаю где он в прошивке и как определить. INTEL-овские начинаются с 0x00..0, а с какого MTK?
Может кто подскажет?
У ARM процессоров в нулевых адресах находятся точки входов в прерывания (только в отличие от x86 там располагаются сами команды переходов, а не адреса преходов). Так что, скорее всего прошивка будет также размещаться с нулевых адресов.

Кроме того, у ARM широко используется адресация относительно счетчика команд PC, их код более позиционно независим, - это усложняет выяснение положение кода в памяти. Наиболее полезный способ: выделить текстовые строки и попытаться найти ссылки на них.

P.S. Прошу прощение, что не сразу ответил, но лучше поздно, чем никогда...
troosh вне форума   Ответить с цитированием Вверх
Старый 28.11.2012, 03:40   #2
KVladG
Пользователь
 
Регистрация: 08.12.2009
Адрес: г.Новосибирск
Сообщений: 194
Поблагодарил: 12
Поблагодарили 34 раз за 32 сообщений
Репа: 10
Цитата:
Сообщение от troosh Посмотреть сообщение
У ARM процессоров в нулевых адресах находятся точки входов в прерывания (только в отличие от x86 там располагаются сами команды переходов, а не адреса преходов). .

Наиболее полезный способ: выделить текстовые строки и попытаться найти ссылки на них.

P.S. Прошу прощение, что не сразу ответил, но лучше поздно, чем никогда...
Не очень понятно, как может быть команда перехода без адреса перехода?
Найти ссылку на текст невозможно при относительной адресации и не имея последовательный текст программы.
У всех MTK -прошивках в адресах с 00...000 до 00...0FF одинаковые коды.
Какой то смысл в этом должен быть.
KVladG вне форума   Ответить с цитированием Вверх
Старый 29.11.2012, 08:39   #3
troosh
Новичок
 
Регистрация: 27.01.2009
Адрес: Москва
Сообщений: 5
Поблагодарил: 12
Поблагодарили один раз в одном сообщении
Репа: 0
Цитата:
Сообщение от KVladG Посмотреть сообщение
Цитата:
в отличие от x86 там располагаются сами команды переходов, а не адреса преходов
Не очень понятно, как может быть команда перехода без адреса перехода?
Это просто ты не правильно понял: у процессоров, когда говорят "вектор прерываний", подразумевают что кроме номера этого вектора есть ещё и соответствующий адрес ячейки памяти, где храниться ссылка на подпрограмму обработчик это прерывания. В процессорах архитектуры CISC (как у x86 машин) в такой ячейки записан только адрес, для выборки которого используется дополнительное оборудование в самом процессоре. В RISC процессоре ARM, для упрощения процессора такое оборудование/логику не предусмотрели - по адресу соответствующему вектору прерывания процессор выбирает инструкцию для процессора и исполняет её (это скорее всего будет команда перехода, но может с этого место сразу же располагаться весь код обработчика прерываний).

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

Цитата:
Найти ссылку на текст невозможно при относительной адресации и не имея последовательный текст программы.
Чаще всего firmware пишут на языке C/C++, массив строк компилятором так кодируется как массив указателей на эти строки, за которым следуют сами строки разделенные нулевыми байтами. Выделяешь в IDA все текстовые строки и если они располагаются в одном массиве строк (например это перечень сообщений об ошибках), наверняка где-то рядом будут размещены указатели на эти строки. Такие указатели кодируются абсолютно, а не относительно, - в них можно выделить общую базу, которая укажет где располагается этот код при исполнении программы.

Попробуй прогнать следующий код, через online компилятор http://www.llvm.org/demo/
Код:
char * errors[] =
{
  "Ok",
  "No memory",
  "No permitions",
  "...",
};

char * error2text(int n)
{
  return errors[n];
}

Обрати внимание как кодируются строки


В прошивке они будут закодированы примерно так:
Код:
 DB "Ok",0,0
 DB "No memory",0,0,0
 DB "No permitions",0,0,0
 DB "...",0,0,0
 DW 0x600240
 DW 0x600244
 DW 0x60025C
 DW 0x600278
Теперь смотря на возрастающие адреса указателей на начало строк, можно предположить что сам код линковщиком был размещен по адресу 0x600000.

Цитата:
У всех MTK -прошивках в адресах с 00...000 до 00...0FF одинаковые коды.
Какой то смысл в этом должен быть.
Может там заголовок какой-то, шапка с данными. Начало кода ARM процессоров легко выделяется визуально в файлах прошивок по hex дампу - каждый четвертый байт 0xE0-0E5 (если только Thumb расширения их системы команд не используется). Я конкретно на прошивки MTК не смотрел.
troosh вне форума   Ответить с цитированием Вверх
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
РАЗЫСКИВАЕТСЯ ФУЛЛ ДЛЯ N95+TV Slider, DUAL SIM,TV,FM,BT MT6225 k@b@n Китайские телефоны - для новичков 1 11.03.2009 11:52
Кредиты и активации для BEST Dongle Infinity DB2020_Logs BB5 Easy Service Tool 0 19.03.2007 03:38


Текущее время: 16:38. Часовой пояс GMT +3.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot