FAQ. Наиболее легкий способ портирования функций : Эльфостроение : Форум

Страница 1 из 16: [1] 2 3 4 5 ... 16 »

 zapret:
22.09.08, 19:40
 Решил значит накактать 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) Скачать файл

 sam22:
22.09.08, 21:12
 1. можешь картинок добавить?
2. для 2010 подходит?

 Va_st:
22.09.08, 21:17
 Да тут картинки лишнее,даже я понял)

 Den750:
22.09.08, 21:18
 о то что надо , респект zapret007 +1

 nvoid:
22.09.08, 21:21
 Ха, бедным владельцам DB2010 всё равно придётся ждать, когда на схожее тело функции портируют :D
А вот в пределах платформы самое то.

 Oganyan-Arthur:
22.09.08, 22:06
 
для начала перевернем ее попарно. получаем 446761b9 .
3 теперь открываем виндовский калькулятор. вычитаем из 446761b9 - 44140000
получаем 5361B9 .


6.теперь снова открываем калькулятор. вводим получившееся значение "417079" и прибавляем 44140000.
получаем 44557079. теперь попарно переварачиваем и получаем 79705544.
вот впринципе и все.


Всё правельно! Но что бы упростить до минимума Твой фак, а точнее работу людей есть программка маленькая! Которая делает это всё сама!
Как программа называется не знаю - автора тоже не знаю- но очень удобная!

На твоём же примере:
1) Открываем прогу!
2) В верхнее левое окошко вставляем адрес "B9616744"
3) нажимаем перевернуть (в правом верхнем окошке получится перевёрнутое значение)
4) С права нажимаем отнять базу (-44140000) (при этом в правом нижнем окошке появится адрес) !
5) Вот теперь ищем в прошивке!

6) когда нашли offset "417079" Вводим его в оставшееся чистое окошко (левое нижнее) и нажимаем прибавить базу (+44140000) , И в верхнем левом окошке появится найденный адрес! Остаётся его перевернуть !
7) нажимаем сново перевернуть и готовый адрес получится в правом верхнем окошке! откуда можите скопировать его и вставить в библиотеку!

Удачи!

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

per_v.2.2.zip per_v.2.2.zip (3.91 kb; 125 hits) Скачать файл

 Deitro:
22.09.08, 22:20
 И все-таки хотелось бы чего-то нового. В частности, портирование какой-нибудь сложной функции с 2012 на 2010. Типа неофициальные ходы, непредсказуемые решения, жонглирование байтами в отладчике, скандалы, интриги, расследования :-) Ато на k790 дофига функций, а их слишком трудно портировать. Примеры таким портов очень пригодились бы. Главное - побольше практики.

 zapret:
22.09.08, 22:20
 VoiD
Ха, бедным владельцам DB2010 всё равно придётся ждать, когда на схожее тело функции портируют :D
А вот в пределах платформы самое то.

ну впринципе и с платформы на платформу можно пробовать так, но не все функции будут получаться.


Добавлено 22.9.08 22:03

sam22, если завтра будет время - может картинок добавлю.

 yr4ik:
23.09.08, 01:00
 Да знаю я такой способ, сейчас им много кто портит, поначалу и я тоже.Но в нем с моей точки зрения - легко допустить ошибку, поскольку не видиш всей функции.

 GPcH:
23.09.08, 02:23
 Deitro писал:
Ато на k790 дофига функций, а их слишком трудно портировать.


Если какую функцию нужно будет портануть - пиши. Если же нужно портануть все которые я не успел сделать за время когда у меня был этот телефон - сорри, нет свободного времени, а для меня этот тел уже не интересен, так как у меня сейчас W580 ужо. Само собой за бабки сделаю хоть все, но врядли кто платить будет :)
Страница 1 из 16: [1] 2 3 4 5 ... 16 »

URL этой темы:
https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=3383

© 2005-2018 supertrubka.org