Перейти к содержанию
Old Phone Forum
  • Вход

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

BinEdit и все о ней


Рекомендуемые сообщения

spyke, опиши последовательность действий, приводящих к ошибкам, постараюсь поправить.

Одна из последних версий binedit здесь.

AlexeyK.gif

Ссылка на комментарий
Поделиться на другие сайты

80-90 % кода прошивки в THUMB, остальное AMR

 

По ходу ARM было бы точнее...

 

Могу добавить для админов - надо бы открыть новую тему именно по программингу ARM процев + подсобирать инфы какие именно в каком теле стоЯт.

 

GreetZ,

Daemon_Magic.

Ссылка на комментарий
Поделиться на другие сайты

покажите напримера как портатировать патч !!а то чуток не разобрался

что надо делать опишите тут или кто может снять видео например программой Snagit и кинуть сюда !!

думаю что это заинтерисует не только меня но и остальных

Ссылка на комментарий
Поделиться на другие сайты

я когда пытаюсь сделать пишет что индефикация прошивки не совпадает с индефикацией патча!!

 

Сначала загрузи прошивку с которой будешь переносить патч, потом сам патч. Идентификаторы должны совпадать. потом в редакторе патчей последовательно запускаешь пункты, на одном из них программа попросит загрузить прошивку на которую необходимо перенести патч.

Одна из последних версий binedit здесь.

AlexeyK.gif

Ссылка на комментарий
Поделиться на другие сайты

вот тут ещё нашёл когда я патч партотировал то случайно взял и на другое окно переключился и лазил там !!! и программа просто напросто зависает экран белеет и всё

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Хотелось бы спрсить автора

Недавно попробовал открыть патч *.smpbz для редактирования но программа ответила что пока не поддерживает данные патчи

Скоро ли выйдет программа с их поддержкой?

X600-->X700+E590

Ссылка на комментарий
Поделиться на другие сайты

gitl, пролистай тему ещё раз уже обсуждалось.

AlexeyK, Есть к тебе очень огромная просьба заточить бин эдит под pocket pc если это вообще возможно

Я думаю это будет очень полезно не только мне

Заранее огромное спасибо ,жду с нетерпением ответа

Ссылка на комментарий
Поделиться на другие сайты

gitl, пока не возникало сильной необходимости, тем более есть конвертер. Можно воспользоваться RARом, надо только переименовать расширение smpbz в bz2. Если надо постараюсь сделать.

 

Duyach, напиши в icq что именно надо для поддержки pocket pc. насколько знаю там используется другой (не ARM) процессор. пока в планах адаптировать программу под D500.

Одна из последних версий binedit здесь.

AlexeyK.gif

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

не то что бы добавить а сделать прогу под кпк чтоб на кпк можно было портировать патчи

а не персональном компе

так доступно :):evil:;)

Ссылка на комментарий
Поделиться на другие сайты

Народ! Я смотрю тут люди знающие =)...

Решил я заняться изготовлением патчей (не портированием). Единственное, что нашёл по этому делу - этот форум. Скачал BinEdit. Вроде немного разобрался... Есть основные подпрограммы, написаные на асме - MCC комманды. Действия в меню описываются уже на уровне этих MCC комманд. Но есть вопросы: Что значат комманды типа "Выполнить 0F x2=39 x3=4 x4=0 x5=0 x6=0", как организована реакция на внешние события (нажатие клавиши, приход СМС и т. п.), вся-ли прошивка написана на этих MCC комнадах, или только часть? И т. д.. =)

 

Вообще, где можно про это почитать - формат MCC комманд, взаимодействие с внеш. устройствами (экран, клава и т. п.)?

Ссылка на комментарий
Поделиться на другие сайты

Прошивка написана на Си, скомпилирована. Исходников на Си нет. Всё что есть получено путём анализа прошивки. МСС - это макрокоманды (или скрипт). В binedit показано почти всё, что было изучено на момент разработки программы. В новой версии можно будет добавлять свои описания.

Т.е. в "Выполнить 0F x2=39 x3=4 x4=0 x5=0 x6=0" известно, что производится обработка и каакие какие параметры могут передаваться, но что именно не известно. Можно посмотреть код и попытаться разобраться что выполняется.

 

Есть обработчик событий, из него запускается большинство МСС инструкций.

 

Часть прошивки ядро OS, часть код прошивки, часть МСС, часть данные.

 

PS. Посмотри ещё форум на Samsung-mobile.ru раздел разработка.

Одна из последних версий binedit здесь.

AlexeyK.gif

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Вот фрагмент одной переписки по разбору МСС, может кому поможет. Всё написанное мои и не только мои предположения и могут не соответствовать действительности.

 

009789B4 1C 00 004C 0000 0000 00000000 0000 0000 Выполнить 00 x2=76 x3=0 x4=0 x5=0 x6=0 (Насколько я понял, надо выполнить MCC_TASK (код в таблице МСС 1С)) –

 

ДА. Запускается МСС функция прошивки MCC_TASK. ей в R0 передаётся адрес описателя (структуры) текущего МСС процесса, по смещению 0 от него находится адрес текущей МСС команды и она берёт свои данные по смещению от этого адреса.

 

Скажи, x2, x3 это регистры для процедуры, точнее параметры? Верно

Еще интересно, посветка зеленым, это код чего? Чтоит понимать 1С процедуру с параметром 05 или 1С05 , т.е MCC_TASK 05? А где там подсветка? 05 – это первый параметр всех МСС функций, как правило соответствует потоку. Для многих функций, например, MCC_TASK, по нему запускаются совершенно разные подфункции, которые сами обрабатывают остальные параметры.

009789C4 21 00 0000 0000 0000 00982D14 0000 0000 Переход на mcc_dir_retmenu1 (0x982D14)

009789D4 C8 00 0000 0000 0000 00000000 0000 0000 Подготовка окна КАК понять какого типа окна готовится?

 

В прошивках типа X100, функция без параметров, служит в основном для выделения памяти для нового меню, создается его описалеть (структура данных) – базовый тип окна. Т.е. своеобразный CreateObect

009789E4 1C 05 0073 0000 0000 00000000 0000 0000 Выполнить 05 x2=115 x3=0 x4=0 x5=0 x6=0

009789F4 60 05 00EE 0005 0041 00000000 0000 0000 Создание меню с первым индексом "Find name" из 5 пунктов Здесь и рисуется всё меню с первого до последнего пункта.

00978A04 74 05 0005 0000 0000 00000000 0000 0000 MCC_JUMPMAIN Начинаем рисовать окно с пунктами меню. Создание таблицы (структуры) с адресами переходов по пунктам меню

00978A14 73 05 0000 0000 0000 00978AE4 0000 0000 MCC_JUMPMENU Найти имя

 

Добавление адреса для пункта в таблице (бывает не адреса а идентификатор, который потом отдельно обрабатывается)

 

00978A24 73 05 0000 0000 0000 0097E134 0000 0000 MCC_JUMPMENU Добавить

00978A34 73 05 0000 0000 0000 0097F624 0000 0000 MCC_JUMPMENU ....

00978A44 73 05 0000 0000 0000 0097FB74 0000 0000 MCC_JUMPMENU ....

00978A54 73 05 0000 0000 0000 0097FE14 0000 0000 MCC_JUMPMENU

00978A64 4D 01 0000 0000 0000 00000000 0000 0000 MCC_RETMENU

00978A74 C8 00 0000 0000 0000 00000000 0000 0000 Подготовка окна

00978A84 1C 05 0073 0000 0000 00000000 0000 0000 Выполнить 05 x2=115 x3=0 x4=0 x5=0 x6=0 Опять выполнить, только с другим параметром х2.

 

Чтобы узнать для чего нужны параметры надо разбираться с самой функцией, наподобие того как написано в “МСС команды.doc”

 

Объясни как понимать эти данные, может есть пояснения для каждого числа?

Изучая предыдущий кусок. Можно понять, что 115, это тип меню с числами перед пунктами. Я прав? НЕТ. Тип меню задаётся в строке 009789F4 60 05 00EE 0005 0041 00000000 0000 0000

60 – MCC_MENU

05 – поток

00EE – индекс первого пункта меню

0005 – количество пунктов

0041 – два байта определяющие тип меню, первый вроде бы уровень, второй как раз тип

00978A94 60 05 00EE 0002 0041 00000000 0000 0000 Создание меню с первым индексом "Find name" из 2 пунктов

00978AA4 74 05 0002 0000 0000 00000000 0000 0000 MCC_JUMPMAIN

00978AB4 73 05 0000 0000 0000 00978AE4 0000 0000 MCC_JUMPMENU

00978AC4 73 05 0000 0000 0000 0097E134 0000 0000 MCC_JUMPMENU

00978AD4 4D 01 0000 0000 0000 00000000 0000 0000 MCC_RETMENU

00978AE4 1D 05 0002 0001 0001 00978B14 0000 0000 Если x1=5 x2=2 x3=1 то переход на mcc_dir_set_type_adn_return (0x978B14)

x3 я понял, что код нажатой клавиши, а остальное не понял. Объясни. что означают остальные иксы. Скорее всего проверяются кикие нибудь параметры

 

Обработка нажатий клавиш производиться при X1=9, коды клавиш x3 =

0x02 - с

0x04 - вверх

0x05 - вниз

0x06 - влево

0x07 - вправо

0x08 - вызов

0x09 - вкл/выкл

0x0E - левая софт

0x0F - правая софт

0x10 - боковая вверх

0x13 - боковая вниз

x2 вроде определяет нажата (1) или отпущена (0)

00978AF4 1E 05 0001 0001 0001 00978B34 0000 0000 Или если x1=5 x2=1 x3=1 то переход на mcc_dir_set_type_fdn_return (0x978B34)

00978B04 21 00 0000 0000 0000 00978B54 0000 0000 Переход на mcc_smpb_search_name (0x978B54)

00978B14 1C 05 000D 0001 0000 00000000 0000 0000 Выполнить 05 x2=13 x3=1 x4=0 x5=0 x6=0

00978B24 4F 00 0000 0000 0000 00000000 0000 0000 MCC_RETURN

00978B34 1C 05 000D 0002 0000 00000000 0000 0000 Выполнить 05 x2=13 x3=2 x4=0 x5=0 x6=0

00978B44 4F 00 0000 0000 0000 00000000 0000 0000 MCC_RETURN

00978B54 11 05 0003 0000 0000 00982A34 0000 0000 MCC_BSRP

--------перескочим---------------

00982A34 C8 00 0000 0000 0000 00000000 0000 0000 Подготовка окна

00982A44 1C 05 0054 0000 0000 00000000 0000 0000 Выполнить 05 x2=84 x3=0 x4=0 x5=0 x6=0

Я так понял x=82 это тип окна, которое выводится, в даном случае выскакивающее окно Инициализация. НЕТ, насколько я знаю

00982A54 91 01 0002 0005 0111 00000000 0000 0000 Сообщение "Phonebook initializing!"

 

В данном случае как раз формируется всплывающее окно. с сообщением – индекс текста сообщения x4=0x0111. Вроде бы x3 или X2 – задержка в секундах, но это не точно.

 

00982A64 21 00 0000 0000 0000 009798A4 0000 0000 Переход на mcc_dir_branch_retmenu (0x9798A4)

---------

 

 

 

 

00978BA4 1D 05 0020 0001 0000 00978C64 0000 0000 Если x1=5 x2=32 x3=1 то переход на mcc_dir_flash_only (0x978C64)

x1=5 x2=32 x3=1 передаются в процедуру, но как какие регистры?

 

в процедуру передаётся только адрес МСС структуры в начале которой находится адрес текущей МСС инструкции в R0. В самой функции данные берутся по смещению от него. Как правило, в начале функции значение из R0 сохраняется в R7 (в некоторых прошивках в R4) или, значительно реже, в стеке. Потом для того чтобы получить данные используется такая инструкция LDR(4 байта), LDRH (2 байта), LDRB (1 байт), например LDR R3,[R7,#8] (R3=значение по адресу R7+:( – это получение пятого параметра. грубо говоря R3=x5.

Со стеком работает так, в начале функции (иногда по ходу) значение SP уменьшается на 4*x, где x – количество используемых локальных переменных. Для хранения 5 значений выполняется SUB SP,SP,#0x14 (SP=SP-20). Потом когда необходимо к ним обращаются по смещению LDR R2,[sP,4] (R2=значение по адресу SP+4) – обращение ко второй локальной переменной.

00978BB4 1D 05 0021 0001 0000 00978CC4 0000 0000 Если x1=5 x2=33 x3=1 то переход на mcc_dir_sim_only (0x978CC4)

---------------------------

00978E64 BD 01 0000 0000 0000 00000000 0000 0000 MCC_WATCHDOG

Если тебе не сложно, объясни MCC_WATCHDOG!!!

 

Подготовка окна тел книги чтоли? Не сталкивался, может для отладчика какая нибудь инструкция. Надо смотреть её код. Может вообще ничего не делает.

Одна из последних версий binedit здесь.

AlexeyK.gif

Ссылка на комментарий
Поделиться на другие сайты

новая версия пока тестируется, так как для телефонов типа X100 там мало нового.

Основные отличия.

1. Полная поддержка ARM7TDMI и частично ARM9TDMI. (дизассемблирование кода)

2. Поддержка Little Endian (было только Big Endian). Это позволяет работать прошивками для телефонов типа С100, X120, D500, E730.

3. Появился отладчик, позволяющий выполнять команды процессора и контролировать состояние регистров и памяти.

4. Появились файлы описания прошивок. Сканирование теперь проводится только 1 раз при первой загрузки прошивки, потом просто грузиться описание, что позволяет ускорить загрузку.

5. Описание инструкций МСС вынесено в отдельный файл. можно редактировать и добавлять свои описания. (добавлять описания МСС или переопределять, можно и для каждой прошивки отдельно в её конфигурационном файле)

6. поддержка новых форматов патчей vpk (Vklay), cnt (SGH C Tool). Возможно будет и загрузка S прошивок и конвертация их в bins (bin файл с информацией об областях значимости.)

 

Сканирование ресурсов прошивок с Little Endian пока не реализовано

Одна из последних версий binedit здесь.

AlexeyK.gif

Ссылка на комментарий
Поделиться на другие сайты

AlexeyK, А когда ее можно самому потестировать?

На стене открылся люк, не пугайся это ГЛЮК!

Ссылка на комментарий
Поделиться на другие сайты

Да будет, но позже. Полностью переделываю анализ патчей.

Еще добовил меню "Патч", в нём можно будет делать патчи для прошивок. Пока есть "Доступ ко всем папкам" с созданием FileManager.rxt и "Убрать название оператора"

Одна из последних версий binedit здесь.

AlexeyK.gif

Ссылка на комментарий
Поделиться на другие сайты

AlexeyK, а на сканирование ресурсов в Little Endian можно надеяться?

http://firmware.sgh.ru/ - архив с символьной информацией для прошивок Samsung

 

SonyEricsson W800i

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти



×
×
  • Создать...