Все для Sony Ericsson, патчи, эльфы, моддинг, прошивка
  
Логин: Пароль: Запомнить: Привет гость! Зарегистрируйся или авторизируйся для получения доп. возможностей!
Разделы
PDA версия сайта
TrackIDentify
Новости
Статьи
Файлы
Патчи
Патчи 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; 390 hits) Скачать файл
HxD.zip HxD.zip (736.83 kb; 209 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
Репутация: 784
Откуда: Курган




 
  #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://supertrubka.org/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
Сообщений: 5826
Репутация: 5274
Откуда: 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.19 секунд | 12 Запросов | HTML: 64.78 КБ -