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

FAQ. Наиболее легкий способ портирования функций : Эльфостроение : Эльфы : Форум : Для Sony Ericsson патчи эльфы моддинг прошивка
/  Список форумов
   /  Эльфы
      /  Эльфостроение
   /  FAQ. Наиболее легкий способ портирования функций
На печать 
Правила 
Страница 5 из 16: « 1 2 3 4 [5] 6 7 8 9 ... 16 »

zapret


Moder


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




 
  #41 [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

DarkDarin


Вникающий


Регистрация: 20.1.08
Сообщений: 29
Репутация: 5





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

 
Oganyan-Arthur писал:
И нафиг нужны ваши эти 7 байт!

в принципе понятно, что не обязательно надо искать 7 байт. Тут попытался сам разобраться и пришел к такому методу:
1. ищем n-количество байт в нужной прошивке
2. если результат отрицательный, убираем 1-2 байта с конца, и повторяем поиск. Так, пока не будет найдено
3. проверяем, одно значение найдено или нет. если одно - то вот она родимая функция (то есть ее offset)
4. если несколько, то начинаю искать уже предыдущие байты (чтоб найти как можно более похожий кусок), т.е. в исходной прошивке беру 4-5 (или скока понадобится) байтов СЛЕВА от исходного и начинаю искать в нужной прошивке.
5. при этом если не нашел, то убираю из поиска один байт слева.
6. когда найду нужный кусок (после таких манипуляций он обычно один), беру адрес байта, с которого надо было начинать поиск.
Пример:
Искомая прошивка
*** C7 F8 29 1C 4D F1 7E FC 01 20 26 34 20 70 30 BD 30 B5 04 1C 0D 1C FF F7 51 FF 00 28 04 D1 FF 21 ***
Жирным выделен необходимый адрес
Начинаю искать строку
B5 04 1C 0D 1C FF F7 51 FF 00 28 04 D1 FF 21
в нужной прошивке. Если результатов нет - убираю байт справа:
B5 04 1C 0D 1C FF F7 51 FF 00 28 04 D1 FF
так, пока не найдет:
B5 04 1C 0D 1C FF
Если инесколько значений, беру для поиска байты слева:
20 26 34 20 70 30 BD 30 B5 04 1C 0D 1C FF
Снова ищу, пока не найдет:
70 30 BD 30 B5 04 1C 0D 1C FF
Смотрю адрес нужного байта (жирный) в нужной прошивке, и далее по факу.

Портировал функции с K750 на W700, нужные для работы BCFGEdit. Если ранее перезагруз или зависания были при выборе любого пункта в конфиге, то сейчас перезагруз только в определенных местах. Значит есть шанс, что часть функций все таки правильно портировал :-)


Добавлено 26.9.08 19:20

в процессе работы встретился со странными функциями
Патч: 
0AEC: FFFFFFFF 582B184C ;82BB: FONT_DESC *GetFontDesc(void);
0AF0: FFFFFFFF 102D184C ;82BC: int *GetFontCount();
что значит 8 перед именем функции? Если перевернуть и вычесть базу, то получившееся значение не может найти в прошивке. Если же у получившегося значения убрать впереди 8, то все нормально. Что это за функции такие?




Главное - всегда знать, чего ты хочешь.
Тогда не придется думать, чего хочется другим.
Спасибо сказали: zapret007

Oganyan-Arthur


Patcher


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





 
  #43 [26.09.08, 20:56] Re: FAQ. Наиболее легкий способ портирования функций   

 
zapret007 писал:
короче хз.. больше не буду факами заниматься


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

DarkDarin писал:
что значит 8 перед именем функции?

Я или тупой или ты чего то не понимаеш!!! Или я чего то понять не могу! Ты что название функции ищеш в проше??? или всё таки адресс?!

КОРОЧЕ Вот Вам ФАК со скринами! В моём исполнении! Может теперь дойдёт- Очень надеюсь!

FAQ лёгкий способ портирование функций со скриншотами.

Пример:

Портируем функцию:

0C00: FFFFFFFF 99803045 ; 300: int Disp_GetStrIdWidth(STRID , int len);

От W810i на W300i . У обоих прошивка R4EA031

1) Вставив значение "99803045" в програмку переворот и получаем адрес "11C8099"

2) Ищем адрес "11C8099" в WinHex в прошивке от W810! Для этого нажимаем на кнопку (рис1)
выходит окошко куда вставляем "11C8099" и нажимаем ОК. (рис2)

3)И так мы нашли значение "B5" в прошивке от W810. Теперь нам надо найти ближайшую строчку
ниже или выше значения из 16 байт в которой не должно содержаться значения "F" . В моём
случае эта строчка "00 0E 28 18 00 04 00 0C 30 BD 00 00 30 B5 0D 1C" в ней как видите не содержится буквы "F".
Выделяем все 16-ть байт и нажимаем на клавиатуре комбинацию Shift+Ctrl+C для копирования этих 16-ти байт в буфер.
P/S: Иногда бывает что ближайшей строчки не содеращей буквы "F" нет рядом- не пугайтесь она всё равно будет віше или ниже-ищите.

4) Теперь переходим на вкладку прошивки от w300i и нажимаем на кнопку (рис.4) Выходит
окошко куда вставляем наши 16-ть байт из буфера и нажимаем ОК.(рис.5).


5)И так мы нашли значение "00" теперь давайте выдели полностью 16-ть байт начиная с найденного значения "00".
И так мы получили "00 0E 28 18 00 04 00 0C 30 BD 00 00 30 B5 0D 1C" (не странно ли? в пункте 3 мы это уже видели в проше от W810, но давайте не спешить)

а) Возвращаемся на вкладку прошивки от W810 и снова нажимаем на кнопочку "ГО ТУ ОВСЕТТ" - сново видим наше значение "B5".

б) Теперь давайте посчитаем от выделенной строчки "00 0E 28 18 00 04 00 0C 30 BD 00 00 30 B5 0D 1C" в низ на ШЕСТОЙ строке наше значение "B5" (рис.3)

в) Возвращаемся на вкладку прошивки от W300 и отсчитываем от найденной строчки "00 0E 28 18 00 04 00 0C 30 BD 00 00 30 B5 0D 1C" в НИЗ как и (в пункте б) ) на ШЕСТЬ строк
и на шестой строчке мы увидем наше найденное значени "B5" (рис.6) Ниже вы можите увидеть адрес Offset 1150465 .Этот адрес вписываем в программку переворот и добовляем базу-потом переворачиваем и адрес найден! Для проверки можите сравнить строчку найденную в прошивке W300 c W810, но
опять же как говорилось ранее все 16-ть байт могут и не свпасть, но ближайшие должны совпать обязательно!!!


Ну вот и всё, конечно буду как всегда вопросы- хотя вроди бы постарался объяснить по крестиянски-обычно и просто на доступном языке.



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

FAQ_legkii_sposob_portirovanie_fynkcii_so_skrinshotami.zip FAQ_legkii_sposob_portirovanie_fynkcii_so_skrinshotami.zip (630.05 kb; 60 hits) Скачать файл


Sony Xperia J
Android 4.1.2
Спасибо сказали: zapret007

zapret


Moder


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




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

 
Oganyan-Arthur, да создавай уже свою тему..




samsung galaxy S3 4.2.2
W580\K750i\k550

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

Crong


Elfmaker


Регистрация: 4.6.07
Сообщений: 419
Репутация: 766
Откуда: Украина




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

 
BinEdit-ом проще...




Xiaomi Redmi Note 5 4/64

Oganyan-Arthur


Patcher


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





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

 
zapret007 писал:
да создавай уже свою тему..

Да ну куда уже и так две есть... :-) Если ещё и третью тему создать так вообще люди с ума сойдут и не поймут вообще нифига.! :-)


Вот бы ещё надо сделать Фак по тонкостям портирования с ДБ 2020 на 2010!!!




Sony Xperia J
Android 4.1.2

agregat


Новичок


Регистрация: 27.9.08
Сообщений: 8
Репутация: 0





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

 
с какого телефона могу портануть функции на w710 R1JC002 CID52??? нужно что бы оффсет был у них одинаковый?

[ Редактировано agregat в 27.9.08 01:16 ]



Alhimick


Новичок


Регистрация: 23.7.07
Сообщений: 3
Репутация: 0
Откуда: Питер




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

 
agregat, учитывая слова знающего товарища
Oganyan-Arthur писал:
Вот бы ещё надо сделать Фак по тонкостям портирования с ДБ 2020 на 2010!!!

я бы даже сказал, что лучше портировать с той же платформы, что и у тебя (db2020)



agregat


Новичок


Регистрация: 27.9.08
Сообщений: 8
Репутация: 0





 
  #49 [27.09.08, 07:29] Re: FAQ. Наиболее легкий способ портирования функций   

 
Alhimick, ну это понятно что своя платформа ближе к телу... конкретно модель сид и прошивка значения не имеют?



E1kolyan


Developer


Регистрация: 8.7.07
Сообщений: 663
Репутация: 11934
Откуда: Челябинск




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

 
agregat, Цид значения не имеет





Sony Ericsson C905 SW-R1FA035
Sony Ericsson K810 SW-R8BF003
Sony Xperia™ S
ZTE Blade X3

agregat


Новичок


Регистрация: 27.9.08
Сообщений: 8
Репутация: 0





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

 
E1kolyan писал:
Цид значения не имеет

а по какому критерию подбирается модель тела и прошивка??? :-?


Добавлено 28.9.08 11:47

ПОРТИРОВАЛ!!! от w610 R6BC002 на свой w710 R1JC002...
портировал Идой. 12 функций... BcfgEdit_main заработал

как портировать функции???(из либа w610 ) :
0AEC: 00000000 94901820 ;82BB: FONT_DESC *GetFontDesc(void);
0AF0: 00000000 28931820 ;82BC: int *GetFontCount();

тут какая то беда с адресами :cry:

:cry: :cry:

[ Редактировано agregat в 28.9.08 12:23 ]


Страница 5 из 16: « 1 2 3 4 [5] 6 7 8 9 ... 16 »



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

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