FAQ. Наиболее легкий способ портирования функций : Эльфостроение : Форум |
Страница 5 из 16: « 1 2 3 4 [5] 6 7 8 9 ... 16 » |
DarkDarin: |
26.09.08, 17:12 |
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(); |
Oganyan-Arthur: |
26.09.08, 20:56 |
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 (630.05 kb; 60 hits) Скачать файл |
zapret: |
26.09.08, 23:11 |
Oganyan-Arthur, да создавай уже свою тему.. |
Crong: |
27.09.08, 00:33 |
BinEdit-ом проще... |
Oganyan-Arthur: |
27.09.08, 00:39 |
zapret007 писал: да создавай уже свою тему.. Да ну куда уже и так две есть... Если ещё и третью тему создать так вообще люди с ума сойдут и не поймут вообще нифига.! Вот бы ещё надо сделать Фак по тонкостям портирования с ДБ 2020 на 2010!!! |
agregat: |
27.09.08, 02:13 |
с какого телефона могу портануть функции на w710 R1JC002 CID52??? нужно что бы оффсет был у них одинаковый? [ Редактировано agregat в 27.9.08 01:16 ] |
Alhimick: |
27.09.08, 03:12 |
agregat, учитывая слова знающего товарища Oganyan-Arthur писал: Вот бы ещё надо сделать Фак по тонкостям портирования с ДБ 2020 на 2010!!! я бы даже сказал, что лучше портировать с той же платформы, что и у тебя (db2020) |
agregat: |
27.09.08, 07:29 |
Alhimick, ну это понятно что своя платформа ближе к телу... конкретно модель сид и прошивка значения не имеют? |
E1kolyan: |
27.09.08, 08:00 |
agregat, Цид значения не имеет |
agregat: |
28.09.08, 01:35 |
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(); тут какая то беда с адресами [ Редактировано agregat в 28.9.08 12:23 ] |
Страница 5 из 16: « 1 2 3 4 [5] 6 7 8 9 ... 16 » |
URL этой темы: https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=3383&start=40 © 2005-2018 supertrubka.org |