Вход

Просмотр полной версии : Toolkit для cpu mt6225, 6226


drag
03.09.2009, 20:14
Люди, возникла проблема. Возможно не вкассу написал, но неопределился куда,так вот.
В связи с отстутствием поддержки руссификации попавшегося флэша (платным софтом) ищу хоть какую-неть инфу о проце 6225 и ему подобным. А именно мануал с мнемокодами и описанием регистров, флагов и т.д. Было-б неплохо и долбаггер ковсему в придачу Может кто стаклкивался с такой необходимостью, в курсе IDA поддерживает или нет ? если да то под каким прибл-но процом смотреть...

WhiteE
04.09.2009, 17:12
Люди, возникла проблема. Возможно не вкассу написал, но неопределился куда,так вот.
В связи с отстутствием поддержки руссификации попавшегося флэша (платным софтом) ищу хоть какую-неть инфу о проце 6225 и ему подобным. А именно мануал с мнемокодами и описанием регистров, флагов и т.д. Было-б неплохо и долбаггер ковсему в придачу Может кто стаклкивался с такой необходимостью, в курсе IDA поддерживает или нет ? если да то под каким прибл-но процом смотреть...
Здесь:
Полные(с описаниями выводов) даташиты ко всем процессорам MTK (http://www.gsmforum.su/showthread.php?t=34554)

Описания процессоров и их комманд, остальное на ARM.COM.

Отдельные MTK SDK в свободном распространении НЕТ!

drag
05.09.2009, 19:52
Здесь:
Полные(с описаниями выводов) даташиты ко всем процессорам MTK (http://www.gsmforum.su/showthread.php?t=34554)

Описания процессоров и их комманд, остальное на ARM.COM.

Отдельные MTK SDK в свободном распространении НЕТ!

спасибо за ответ,всё коротко и ясно.
уже нашёл что искал. ARM7EJ-S база,вот тащу на него девелопмент...

WhiteE
06.09.2009, 01:27
спасибо за ответ,всё коротко и ясно.
уже нашёл что искал. ARM7EJ-S база,вот тащу на него девелопмент...
SDK для ARM ничем не поможет.
У меня есть на 1Гб из последних, не поможет для руссификации.
Пока будешь разбиратся - за это время можно вручную каждое слово в прошивке руссифицировать.
MTK Phone SDK сильно отличается от ARM SDK.

drag
06.09.2009, 22:27
да я не только ради этой паршивы,я на дальнейшее не в лом поразбираться моментами когда время есть.
Но всё равно спасибо за совет.

KVladG
08.12.2009, 12:01
да я не только ради этой паршивы,я на дальнейшее не в лом поразбираться моментами когда время есть.
Но всё равно спасибо за совет.
Прочитал Ваш Топ. Тоже хочу поработать на IDA с прошивками. Не сообщите, как Ваши успехи в этом направлении. Я загружал прошивки, но дезасс. запрашивает стартовый адрес для работы, а я не знаю где он в прошивке и как определить. INTEL-овские начинаются с 0x00..0, а с какого MTK?
Может кто подскажет?

troosh
27.11.2012, 23:38
Прочитал Ваш Топ. Тоже хочу поработать на IDA с прошивками. Не сообщите, как Ваши успехи в этом направлении. Я загружал прошивки, но дезасс. запрашивает стартовый адрес для работы, а я не знаю где он в прошивке и как определить. INTEL-овские начинаются с 0x00..0, а с какого MTK?
Может кто подскажет?

У ARM процессоров в нулевых адресах находятся точки входов в прерывания (только в отличие от x86 там располагаются сами команды переходов, а не адреса преходов). Так что, скорее всего прошивка будет также размещаться с нулевых адресов.

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

P.S. Прошу прощение, что не сразу ответил, но лучше поздно, чем никогда...

KVladG
28.11.2012, 03:40
У ARM процессоров в нулевых адресах находятся точки входов в прерывания (только в отличие от x86 там располагаются сами команды переходов, а не адреса преходов). .

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

P.S. Прошу прощение, что не сразу ответил, но лучше поздно, чем никогда...

Не очень понятно, как может быть команда перехода без адреса перехода?
Найти ссылку на текст невозможно при относительной адресации и не имея последовательный текст программы.
У всех MTK -прошивках в адресах с 00...000 до 00...0FF одинаковые коды.
Какой то смысл в этом должен быть.

troosh
29.11.2012, 08:39
в отличие от 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];
}


.L.str:
.asciz "Ok"
.size .L.str, 3

.type .L.str1,@<available in full version of forum> # @<available in full version of forum>
.L.str1:
.asciz "No memory"
.size .L.str1, 10

.type .L.str2,@<available in full version of forum> # @<available in full version of forum>
.L.str2:
.asciz "No permitions"
.size .L.str2, 14

.type .L.str3,@<available in full version of forum> # @<available in full version of forum>
.L.str3:
.asciz "..."
.size .L.str3, 4

.type errors,@<available in full version of forum> # @<available in full version of forum>
.data
.globl errors
.align 16
errors:
.long .L.str
.long .L.str1
.long .L.str2
.long .L.str3
.size errors, 16



В прошивке они будут закодированы примерно так:

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К не смотрел.