Все для Sony Ericsson, патчи, эльфы, моддинг, прошивка
  
Логин: Пароль: Запомнить: Привет гость! Зарегистрируйся или авторизируйся для получения доп. возможностей!
Разделы
PDA версия сайта
Новости
Статьи
Файлы
Патчи
Патчи A2
Патчи db2020
Эльфы
Исходники эльфов
Wiki
Форум
Обратная связь
Развернуть/Свернуть
 
Развернуть/Свернуть

FAQ. Наиболее легкий способ портирования функций : Эльфостроение : Эльфы : Форум : Для Sony Ericsson патчи эльфы моддинг прошивка
/  Список форумов
   /  Эльфы
      /  Эльфостроение
   /  FAQ. Наиболее легкий способ портирования функций
На печать 
Правила 
Страница 13 из 16: « 1 ... 9 10 11 12 [13] 14 15 16 »

zapret


Moder


Регистрация: 27.5.07
Сообщений: 1577
Репутация: 1813
Откуда: Königsberg-Калининград




 
  #121 [22.09.08, 19:40] FAQ. Наиболее легкий способ портирования функций   

 
Решил значит накактать FAQ по портированию функций библиотеки. как мне кажется уже проще моего - некуда.
В примере будет описано портирование функции 0450: 00000000 B9616744 ; 114: int sprintf(char *buf, const char *fmt, ...);
с W850 SW-R1KG001 для W580 SW-R8BE001
Что значит нам понадобится:
1) фактически единственная прога HxDen (прикрепил) (вместо нее можно использовать другие подобные проги, к примеру бинэдит. просто что в этой нет ничего лишнего).
2) Так же понадобятся уже сконвертированные прошивки w580 и w850 в формат raw.
И так приступим.
1.Открываем программой HxDen обе прошивки.
выбираем для начала w850.
2. теперь рассмотрим функцию "B9616744".
для начала перевернем ее попарно. получаем 446761b9 .
3 теперь открываем виндовский калькулятор. вычитаем из 446761b9 - оффсет(конкретно в моем случае 44140000. чвой оффсет можно узнать с помошью программы babe2raw)
получаем 5361B9 .
4.значит переходим по этому адресу(offset). и вот перед нами участок кода по этому адресу. я беру 7 байт(должно хватить)(в раззных случаях берем по-разному. иногда может хватить и 3 байт, иногда нужно больше)
B4 10 B5 82 B0 04 1C 04 - вот они те самые 7 байт.
5. теперь переходим в прощивку w580.
жмем Ctrl + F
в открывшимся окне в поле Seath for: вводим те самые найденные "B4 10 B5 82 B0 04 1C 04"
в поле Datatypes выбираем Hex-values
ставим галочку на all и жмепм окей.
получаем offset(в левом нижнем углу) 417079.
6.теперь снова открываем калькулятор. вводим получившееся значение "417079" и прибавляем 44140000.
получаем 44557079. теперь попарно переварачиваем и получаем 79705544.
вот впринципе и все.

Этот способ я считаю одним из самых простых. в место м предлагаемой мною проги HxDen можно использовать иду.
Этим способом возможно получится портировать не все функции. Будут вопросы - задавайте.
врятли получится портировать с одной платформы на другую.
(с) zapret007
специально для сайтов mobilefree и se-team


P.S. не бросаемся сразу портировать все недастоющие функции. сначала нужно посмотреть ее описание=)
вот к примеру функция для w580 непортированная.
;0B70: xxxxxxxx yyyyyyyy ; 2DC: void OrangeLED_Control(int _free_val, int or_LED_ID, int level, int fade_time);
думаю дай-ко портану=) ага.. а если в название вчитаться - становится ясно, что ее в телефоне то нету=) нету оранжевого диода=)


прикрепляю программу для более быстрого переворачивания адресов и выитания\прибавления оффсета



Прикрепленный к сообщению файл:

per_v.2.2.zip per_v.2.2.zip (3.91 kb; 394 hits) Скачать файл
HxD.zip HxD.zip (736.83 kb; 213 hits) Скачать файл


samsung galaxy S3 4.2.2
W580\K750i\k550

если собрали учет занятого места в прошивке - обращайтесь
Спасибо сказали: Va_st, Zormax, Joker XT, Man1980, sam22, Den750, VoiD, timos_06, Double_A, Pharaon, Deitro, 68-artem, yr4ik_07, BloodyMessage, ArmageddON, qwert, Zart, Ricollin, TOLIK111, DarkDarin, InDiGo, PUZ, Fanse, RedNaxLex, Dragon94, Frost-by, Krab, ANSARIK, metalist-tula, Rusty, ENSAIER, User_Vetal, NakedGun, TahaSpawn, vodoo999, flips, $lavko, RomaRi, dimony

UltraShot


Developer/Moder


Регистрация: 21.5.07
Сообщений: 1729
Репутация: 1827
Откуда: Санкт-Петербург / Череповец




 
  #122 [21.06.09, 12:00] Re: FAQ. Наиболее легкий способ портирования функций   

 
Oganyan-Arthur, в "портировании констант" глянь=)




zapret


Moder


Регистрация: 27.5.07
Сообщений: 1577
Репутация: 1813
Откуда: Königsberg-Калининград




 
  #123 [21.06.09, 13:42] Re: FAQ. Наиболее легкий способ портирования функций   

 
den_po, а.. ну нормально.. инструкции год уже почти, а он только прочитал=)) так держать=)




samsung galaxy S3 4.2.2
W580\K750i\k550

если собрали учет занятого места в прошивке - обращайтесь

den_po


Developer/Admin


Регистрация: 27.3.06
Сообщений: 3279
Репутация: 10763
Откуда: Чебоксары




 
  #124 [21.06.09, 14:17] Re: FAQ. Наиболее легкий способ портирования функций   

 
zapret007, ну а моему варианту почти три года. сравни их =)




promt is better than google translate

zapret


Moder


Регистрация: 27.5.07
Сообщений: 1577
Репутация: 1813
Откуда: Königsberg-Калининград




 
  #125 [21.06.09, 14:35] Re: FAQ. Наиболее легкий способ портирования функций   

 
ну да, похожи=) могу грохнуть этот=) а то надоели с вопросами=)




samsung galaxy S3 4.2.2
W580\K750i\k550

если собрали учет занятого места в прошивке - обращайтесь

Oganyan-Arthur


Patcher


Регистрация: 12.3.08
Сообщений: 1063
Репутация: 1004





 
  #126 [21.06.09, 15:34] Re: FAQ. Наиболее легкий способ портирования функций   

 
zapret007,

а то с той инструкцией вопросов меньше.... Пусть уже живёт.




Sony Xperia J
Android 4.1.2

zapret


Moder


Регистрация: 27.5.07
Сообщений: 1577
Репутация: 1813
Откуда: Königsberg-Калининград




 
  #127 [21.06.09, 15:39] Re: FAQ. Наиболее легкий способ портирования функций   

 
да я шутя=)




samsung galaxy S3 4.2.2
W580\K750i\k550

если собрали учет занятого места в прошивке - обращайтесь

MaxxxS


Patcher


Регистрация: 24.1.09
Сообщений: 168
Репутация: 802
Откуда: Курган




 
  #128 [26.06.09, 23:03] Re: FAQ. Наиболее легкий способ портирования функций   

 
Портирование фунок с помощью плагина для IDA page/sub finder.
Данный метод хорошо использовать для межплатформенного порта.

Если вы впервые пользуетесь этой программой, то необходимо скачать несколько дополнений:
- ida_babeldr от IronMaster Den-po (позволяет не париться с оффсетом и не надо переводить прошивку в raw) файл babeldr.ldw положить в \%ваша папка%\IDA\loaders\
- pagesub от Den_po. положить в \%ваша папка%\IDA\plugins\

Итак, приступим. Открываем прошивку в IDA, в поле тип файла выбираем SonyEricsson firmware file (babeldr.ldw). В поле Processor type выбираем ARM processors:-> OK -> Yes
Hастраиваем далее: Options -> General -> IDA Options во вкладке Dissasembly в разделе Display disassembly line parts необходимо поставить галочку "Auto comments" и поставить в поле Number of opcode bytes 4.
Далее Options -> general -> analysis -> processor specific analysis options -> disable pionter referencing, ставим туда галку, и нажимаем кнопку: Options -> general -> analysis -> reanalyze program
теперь ида не будет скрывать хрефы.

Теперь запускаем плагин: Edit -> Plugins -> sub/page finder
Некоторое время придётся подождать (от 5 до 10 минут, в зависимости от платформы телефона, прошивку которого вы открываете и мощности компьютера)
То же самое проделываем с прошивкой на которую портируем.

Приготовления окончены, теперь, собственно, сам процесс портирования:

Рассмотрим простенький порт функции 366: int IrDa_GetState(char *state); с K810 SW-R8BA024 на W810 SW-R4EA031.
Берём функу для K810
Патч: 
0D98: 00000000 E5693E45 ; 366: int IrDa_GetState(char *state);

переворачиваем её - должно получиться 453E69E5, В программе нажимаем G и переходим по этому адресу. мы должны увидеть
Код: 
ROM:453E69E4
ROM:453E69E4             sub_453E69E4                            ; CODE XREF: sub_44EF0884+2j
ROM:453E69E4                                                     ; sub_453E7A84+F2p
ROM:453E69E4                                                     ; DATA XREF: ...
ROM:453E69E4 00 B5                       PUSH    {LR}            ; Push registers
ROM:453E69E6 01 22                       MOVS    R2, #1          ; Rd = Op2
ROM:453E69E8 01 1C                       ADDS    R1, R0, #0      ; Rd = Op1 + Op2
ROM:453E69EA EE 20                       MOVS    R0, #0xEE       ; Rd = Op2
ROM:453E69FC 19 F5 B8 FD                 BL      sub_45100570    ; Branch with Link

Если нет, то поднимаемся на один байт вверх, нажимаем С, не забыв при этом указать, что нам нужен Thumb-режим (для этого нажимаем Alt+G и выбираем 1).
Получилась наша функа. Эти циферки мало что говорят человеку не занимающемуся программированием. Так что будем искать что-то более осмысленное.
Теперь переходим в графический режим: нажимаем на кнопку со структурой или пробел.
Наверху блок-схемы 3 кнопки: нам нужна кнопка с черными стрелочками "Jump to xref" Нажимаем её и видим окошко с 3-мя адресами. Переходим по первой строчке на адрес 44EF0884, повторяем процедуру, переходим дальше. Видим что теперь что переход осуществляется в более менее осмысленную функцию pg_ObEx_IR_AlignDevices. Если интересно, то можно нажать на кнопку ещё раз. Там будет ивент. Мы пришли к самому началу.
Теперь берём и копируем название pg_ObEx_IR_AlignDevices, переходим в окошко с прошивкой от W810, нажимаем Alt+T вставляем наш текст -> ставим галку на Find all occurences -> OK.
После продолжительного ожидания появляется окошко, где мы видим все строки, что содержат данные слова. Из них функций всего 3. Просматриваем их и видим, что больше всего похожа на функцию от K810 та, что находится по адресу 44FD373C.
Теперь смотрим куда идти дальше: в прошивке К810 нажимаем кнопки назад (Esc) вперёд (Ctrl+Enter) видим выделенную жёлтым sub_44EF0884. Она находится в третьем блоке снизу и второй вызов снизу (или говоря проще второй BL sub_xxxxxxxx). Смотрим то же место в прошивке W810. Нашли строчку
Код:
ROM:44FD3794 01 F0 14 FB                 BL      sub_44FD4DC0    ; Branch with Link
кликаем по ссылке и переходим по ней вперёд. Далее кликаем на off_44FD4DC4 и на sub_45535C3C+1.
Вот мы и пришли к нашей искомой функе!
Код: 
ROM:45535C3C             sub_45535C3C                            ; CODE XREF: sub_44FD4DC0+2j
ROM:45535C3C                                                     ; pg_IR_AutoOffTimerExpired__PAGE_EXIT_EVENT+Ep
ROM:45535C3C                                                     ; DATA XREF: ...
ROM:45535C3C 00 B5                       PUSH    {LR}            ; Push registers
ROM:45535C3E 01 22                       MOVS    R2, #1          ; Rd = Op2
ROM:45535C40 01 1C                       ADDS    R1, R0, #0      ; Rd = Op1 + Op2
ROM:45535C42 EE 20                       MOVS    R0, #0xEE       ; Rd = Op2
ROM:45535C44 20 F0 76 F9                 BL      sub_45555F34    ; Branch with Link

Структура немного не совпадает - это из-за разности платформ. Но для большей уверенности что мы нашли правильно, кликаем на sub_45555F34 и идём вперёд до адреса 450973CC. В прошивке от K810 делаем то же самое. Видим что по адресу 4510061C для К810 и 450973CC для W810 одинаковые функи, значит мы всё нашли правильно.
Теперь остаётся записать её в либу.
Берём наш адрес 45535C3C, прибавляем к нему 1 получается 45535C3D, переворачиваем 3D5C5345. получилось
Патч: 
;W810 SW-R4EA031
;(c) Hussein , IronMaster
;(p) %username%
0D98: FFFFFFFF 3D5C5345 ; 366: int IrDa_GetState(char *state);

Теперь устанавливаем функу в телефон и окончательно проверяем работоспособность.
Напоследок могу сказать что xref-ов может быть много и не всегда так быстро можно найти что-то осмысленное, также некоторые функции могут по другому называться. Так что наберитесь терпения... Опыт приходит со временем.
Надеюсь теперь запросов по портированию будет меньше. Успехов!

PS: Выражаю огромную благодарность den-po, UltraShot, Random, awg, MysticBeast и остальным за то что научили этой мудрёной науке добрыми советами ;-) и посылами в нужные темы :-)

[ Редактировано MaxxxS в 27.6.09 02:19 ]




SE Пешиход 810 [R4EA031fix] ЭП v1.9.2
Philips W632_1228_V13_root Android 2.3.5
Спасибо сказали: -Sanek-, zapret007

Oganyan-Arthur


Patcher


Регистрация: 12.3.08
Сообщений: 1063
Репутация: 1004





 
  #129 [26.06.09, 23:38] Re: FAQ. Наиболее легкий способ портирования функций   

 
Интересно и много фунок Ты Портанул с 2020 на 2010 ?




Sony Xperia J
Android 4.1.2

den_po


Developer/Admin


Регистрация: 27.3.06
Сообщений: 3279
Репутация: 10763
Откуда: Чебоксары




 
  #130 [26.06.09, 23:52] Re: FAQ. Наиболее легкий способ портирования функций   

 
MaxxxS пишет:
Итак, приступим. Открываем прошивку в IDA, в поле тип файла выбираем SonyEricsson firmware file (babeldr.ldw). В поле Processor type выбираем ARM processors:-> OK -> Yes
если открывать мэйн от А1, то можно вообще ничего не выбирать. для того idababeldr и делался. открываешь файл, в диалоге тупо жмёшь enter и всё.

Hастраиваем далее: Options -> General -> IDA Options во вкладке Dissasembly в разделе Display disassembly line parts необходимо поставить галочку "Auto comments" и поставить в поле Number of opcode bytes 4.
на вкус и цвет, но...
лишние комментарии отвлекают, за ними нужных коментов не увидишь. и отображение хекса в дизасме лучше включать только при необходимости. но это мои предпочтения

Далее Options -> general -> analysis -> processor specific analysis options -> disable pionter referencing, ставим туда галку, и нажимаем кнопку: Options -> general -> analysis -> reanalyze program
теперь ида не будет скрывать хрефы.
ида и так не скрывает. если тебе удобней видеть команды вроде LDR Rx,ADDRESS вместо LDR Rx,=#число, то галку лучше поставить. мне же удобней видеть число =)

То же самое проделываем с прошивкой на которую портируем.
ты ещё забыл про константы =)
http://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=3171&post_id=131797#131797

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

в целом одобряю, примеры это хорошо =) Slawwan про константы писал менее понятно (не, ну я-то понимаю =) )


Добавлено 26.6.09 23:54

MaxxxS пишет:
- ida_babeldr от IronMaster

эммм... =)




promt is better than google translate
Спасибо сказали: MaxxxS

Zormax


Admin


Регистрация: 12.12.05
Сообщений: 5820
Репутация: 5289
Откуда: Nizhniy Novgorod




 
  #131 [29.06.09, 12:16] Re: FAQ. Наиболее легкий способ портирования функций   

 
HxDen прикрепил к первому посту.




TOOKY T83 (1.3.1-L2), MK808B
Страница 13 из 16: « 1 ... 9 10 11 12 [13] 14 15 16 »



  • Поиск
  • Права
Вы не можете начинать темы.
Вы не можете редактировать свои сообщения.
Вы не можете создавать опросы.
Вы не можете вкладывать файлы в сообщения.
Вы не можете отвечать на сообщения.
Вы не можете удалять свои сообщения.
Вы не можете голосовать.

Главная Новости Статьи Файлы Патчи Форум Опросы PDA
- Генерация страницы: 0.06 секунд | 13 Запросов | HTML: 64.47 КБ -