EvgeniyZ Posted March 27, 2006 Report Share Posted March 27, 2006 Портирую патч, но вот в патче изменяется такой код: ....................................................10C31468: 02F66202 BLX off_10A3393010C3146C: F662 STR R6, [R6, #0x2C] 10C3146E: 02F66202 BLX off_10A33934 10C31472: F662 STR R6, [R6, #0x2C] 10C31474: 02F66202 BLX off_10A3393C 10C31478: F662 STR R6, [R6, #0x2C] 10C3147A: 02F66202 BLX off_10A33940 10C3147E: F662 STR R6, [R6, #0x2C] 10C31480: 02F66202 BLX off_10A33948 10C31484: F662 STR R6, [R6, #0x2C] 10C31486: 02F66202 BLX off_10A3394C 10C3148A: F662 STR R6, [R6, #0x2C] 10C3148C: 02F66202 BLX off_10A33954 10C31490: F662 STR R6, [R6, #0x2C] 10C31492: 02F66202 BLX off_10A33958 10C31496: F662 STR R6, [R6, #0x2C] 10C31498: 02F66202 BLX off_10A33960 .................................................... Как такой код найти в другой прошивке и как узнать с какого именно адреса применять патч(Т.к. патч с определенного адреса начинает изменять этот код, а код перед этим адресом такой же)?По кокому принципу определяется нужный адрес в блоках с одинаковым кодом?(Прошивка X700XEEK6 портирую на X700XEFA1 патч CallerId_2) 1 Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
sleeping-man Posted March 27, 2006 Report Share Posted March 27, 2006 Если бинэдит не находит сам эквивалент адреса в другой прошивке то искать надо следовательно вручную по мсс функициям, так вот объясните пожалуйсто как это выглядит. я не понял... и в каких случаях надо искать по коду. ASUS-P535+2048 MbLogitech G5 + Logitech G15 + SteelPad 5L = Cool Designer | art.sgh.ru - Art For You - Темы, Графика, Уроки | X700XEEK6 Windows Vista Mod | Шрифты X700,d500,e730 и т.д. | Создаём красивое меню для х700,e730 и т.д. | Link to comment Share on other sites More sharing options...
EvgeniyZ Posted March 28, 2006 Author Report Share Posted March 28, 2006 sleeping-man, Это ты мне ответил? Или просто задал вопрос?! Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
sleeping-man Posted March 28, 2006 Report Share Posted March 28, 2006 вопрос задал ASUS-P535+2048 MbLogitech G5 + Logitech G15 + SteelPad 5L = Cool Designer | art.sgh.ru - Art For You - Темы, Графика, Уроки | X700XEEK6 Windows Vista Mod | Шрифты X700,d500,e730 и т.д. | Создаём красивое меню для х700,e730 и т.д. | Link to comment Share on other sites More sharing options...
Sergeyl Posted March 29, 2006 Report Share Posted March 29, 2006 Портирую патч, но вот в патче изменяется такой код: ....................................................10C31468: 02F66202 BLX off_10A3393010C3146C: F662 STR R6, [R6, #0x2C]10C3146E: 02F66202 BLX off_10A33934 Ну ты насмешил. Что ты смотришь это место как код . Этоже просто картинка ..На которой расположен новый код для патча. Для этого можешь использовать любую неиспользуемую картинку в прошивки . Могу помочь , Используй картинки фон под датой Они в Х700 не используются . Я для Х700 как раз на них патчи и распологал SAMSUNG -Е100 -> E730 - > Nokia N73Если у вас беда ,то мы идем к вам …… SGH.ru Link to comment Share on other sites More sharing options...
EvgeniyZ Posted March 30, 2006 Author Report Share Posted March 30, 2006 Sergeyl, Спасибо за ответ! Но зачем смеяться, я же только учусь! Лучше бы рассказал, как определить по коду картинка это или что-то другое! Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
Sergeyl Posted March 30, 2006 Report Share Posted March 30, 2006 Но зачем смеяться, я же только учусь! Я не хотел тебя обидеть. Извени если что. Лучше бы рассказал, как определить по коду картинка это или что-то другое! Да у тебя что карты ресурсов нет. А так лучше пиши в личку или стучи в Асю . Если буду свободен отвечу на вопросы SAMSUNG -Е100 -> E730 - > Nokia N73Если у вас беда ,то мы идем к вам …… SGH.ru Link to comment Share on other sites More sharing options...
EvgeniyZ Posted April 1, 2006 Author Report Share Posted April 1, 2006 Мне нужно переписать вот этот код: 004F LDR R7, =0x10C3151D R7 = значение по адресу (PC + 0)=[0xEED91770]= 0x10C3151D3847 BX R7 переход по адресу в R7.Как я понимаю регистру R7 присваивается значение регистра PC, а потом осуществляется переход по этому адресу.Но мне нужно регистру R7 присвоить значение адреса 0x101119E68. Я так понимаю мне нужна команда ассемблера, чтобы было: R7 = значение по адресу (PC - ?)=[0x????????]= 0x101119E68.Как эта команда называется (если она есть)? Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
Ustin Posted April 3, 2006 Report Share Posted April 3, 2006 Подскажите пожалуйста зчто отвечает адрес в прошивке X100XEDG1 - 00096DB0!И как найти экваволент этого адреса в пошивке X460CBEB1 ! Mot C350=>X100=>X100=>X460+X640 Link to comment Share on other sites More sharing options...
Хацкер Posted April 5, 2006 Report Share Posted April 5, 2006 Как я понимаю регистру R7 присваивается значение регистра PC, а потом осуществляется переход по этому адресу. правильно понимаешь, команда та же LDR, обрати внимание на адрес EED91770 - там непосредственно адрес 10C3151D. Так вот команда LDR - просто грузит в регистр его значение.... но со смещением кратным 4-м байтам, поймать можно перебором004F - обращение к тек.адрес + 4 байта014F - обращение к тек.адрес + 8 байт024F - обращение к тек.адрес + 12 байти т.д. меняя первый байт пока не поймаешь я думаю очевидно, что и свой адрес 0x101119E68, ты должен размещать кратно 4 байтам. Попробуй в BinEdite в редакторе патче поэксперементировать, правя адрес в коде и глядя на мнемонику команды... BinEdit подскажет!Есть еще вариант, по идее удобнее... использовать встроенный компилятор BinEdit, он код сам рисует... но это совсем отдельная история Но мне нужно регистру R7 присвоить значение адреса 0x101119E68 ты опечатался? адрес и емкость регистров 4 байта! Ustin, как я делаю. я гружу прошивку с символьной информацией, для g1 - она неполная, а вот WK - для х100 - там SYM оригинальный, и ищу аналогичный код сначала там, разбираюсь чего он собственно выполняет и по аналогии делаю для своей прошивки (е630) если на твой тел. нет никакой символьной инфы... подбирай прошивки максимально схожие, можно попробовать перегнать символы на свою... а там уже сопоставляй. Принцип - ищешь аналогичную функцию которую затрагивает патч (если есть символы - по названию) и аналогично воспроизводишь.вот кстати есть для твоего тела оригинальный сум http://firmware.javer.sgh.ru/?frm=X460XEEB1&t=4 Ковыряю e630 Link to comment Share on other sites More sharing options...
Ustin Posted April 5, 2006 Report Share Posted April 5, 2006 Хацкер, Ну для начала сум файлы у меня есть для обоих из этих прошивок!А вот прошивка на которую надо перевести адрес X460CBEB1! Mot C350=>X100=>X100=>X460+X640 Link to comment Share on other sites More sharing options...
Хацкер Posted April 5, 2006 Report Share Posted April 5, 2006 Ustin, тебе итак крупно повезло! А ты еще перебираешь Довольствуйся тем что есть ведь эти прошивки на 99,9% одинаковые. Можешь попробовать перегнать символы на свою - вся инфа в хелпах Ковыряю e630 Link to comment Share on other sites More sharing options...
Ustin Posted April 5, 2006 Report Share Posted April 5, 2006 А в том и то и прикол что символьная информация есть и на эту прошивку! Mot C350=>X100=>X100=>X460+X640 Link to comment Share on other sites More sharing options...
EvgeniyZ Posted April 6, 2006 Author Report Share Posted April 6, 2006 Хацкер, Спасибо, я понял с адресами! А вот что делать, если:Например, В патче "Батарейка на 16 делений" (в прочем и в других патчах это встречается):есть, например, код 102B4FBC: 0F4D LDR R5, =gv_InCharge,как я понимаю в регистр R5 загружается адрес переменной(?) и для другой прошивки можно найтиэквивалентную переменную(?) при портировании патча,а вот как быть если102B4FD4: 0B48 LDR R0, =0x000081AFПочему это значение 0x000081AF и для другой прошивки это же будет значение? Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
CTAPbIY Posted April 6, 2006 Report Share Posted April 6, 2006 EvgeniyZ, для другой прошивки, скорее всего, надо искать эквивалентный адрес. смотри, где этот адрес еще используется... E630XEDK2 + Nokia N72+1GbВсё, что нас не убивает, то нас делает сильней! (Е. Летов) Link to comment Share on other sites More sharing options...
EvgeniyZ Posted April 6, 2006 Author Report Share Posted April 6, 2006 CTAPbIY, В том то и дело, что это не совсем адрес в прошивке (как я понимаю), а адрес хранения какой-то переменной (может я и не прав), но, например, в другом патче есть, например, адрес 0х18....., но такого адреса нет, прошивка закончилась давно! Вот я и хочу узнать, как именно найти этот эквивалентный адрес! А то вот в этом вся загвоздка, уже все патчи просмотрел, но портировать из-за этого не получается, т.к. не совсем понимаю, что с этими адесами! Объясните, пожалуйста, популярно для начинающего!!! Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
CTAPbIY Posted April 6, 2006 Report Share Posted April 6, 2006 Если это даже адрес за пределами прошивки, он всяко разно используется не однократно. ищи где еще он используется, потом ищи эквивалент и т.д... E630XEDK2 + Nokia N72+1GbВсё, что нас не убивает, то нас делает сильней! (Е. Летов) Link to comment Share on other sites More sharing options...
EvgeniyZ Posted April 6, 2006 Author Report Share Posted April 6, 2006 Если это даже адрес за пределами прошивки, он всяко разно используется не однократно. ищи где еще он используется, потом ищи эквивалент и т.д... По подробнее можно, как искать? 1 Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
Хацкер Posted April 6, 2006 Report Share Posted April 6, 2006 но такого адреса нет, прошивка закончилась давно! Вот я и хочу узнать, как именно найти этот эквивалентный адрес!Когда я начинал ... я тоже был обескуражен тем - что прошивка закончилась и как искать не понятно. Это область оперативки, соответственно в прошивке ее не будет. Но логично предположить что к этой глобальной переменной идет обращение из кода самой прошивки - так?! Значит надо найти в прошивке где идет обращение к ней. Т.е. зная адрес этой гл. переменной (gv_InCharge) надо поискать где она еще используется помимо патча... т.е. найти функцию в которой она используется - а потом... правильно! найти такую же функцию и у себя - и уже в своем коде ты увидишь новый свой адрес для той же переменной!А что делать, к примеру если адрес оперативки в исходной прошивке не соответствует какой-либо переменной (сигнатуре) - тогда рискну предположить что автор патча искал место в оперативке для своего патча... значит надо от чего-то отталкнутся - от переменной которая идет перед нашим адресом - берем и в калькуляторе - вычитаем от нашей переменной и ближайшей - получаем на сколько байт она убежала от нее - как правило круглое число потом ищем также где в коде используется переменная которая предшествует нашей и к полученному адресу прибавляем наше смещение... все элементарно Ватсон! Ковыряю e630 Link to comment Share on other sites More sharing options...
EvgeniyZ Posted April 7, 2006 Author Report Share Posted April 7, 2006 Хацкер, Спасибо огромное! Теперь буду разбираться! Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
EvgeniyZ Posted April 9, 2006 Author Report Share Posted April 9, 2006 Хацкер, Разобрался, но вот возник вопрос: " Как я могу сам найти место в оперативке под свою переменную?" Ведь, как я понимаю, не обязательно переменную прописывать в эквивалентном месте оперативки, что и в исходном патче?! Можно и в другое свободное место прописать!? Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
Хацкер Posted April 9, 2006 Report Share Posted April 9, 2006 EvgeniyZ, Вполне, главное найти место (адрес) который бы не использовался или же использовался, но вместе с твоим кодом не конфликтовалЗдесь надо быть осторожным... Смотри опять же оригинальную символьную информацию по коду... после сигнатур для основного кода прошивки, далее идет разметка адресов оперативки... обрати внимание на "расстояние" между адресами... т.о. ты определишь где и сколько памяти выделено на конкретную переменную... есть глобальные переменные (от 1 до 4-х байт), а есть и буфера отведенные для ресурсоемких задач.На медне ковырял патч на увеличение размера мелодий ММF, мои догадки строятся на том, что там ссылки на стандартный буфер ОП поменяли на другой - большой, т.о. при наличии установленного на телефоне этого патча, можно использовать оперативку от стандартого буфера под мелодии. ... и еще, немного в догонку про адреса оперативки. Не забывай, что явного указания на адрес может и не быть вовсе. Оптимизатор кода постоянно хитрит, если адрес может быть получен арифметическими операциями от уже задействованного ранее, который сидит в регистре, то он выберет именно этот способ, т.к. он занимает меньше места.Т.е. к примеру 1.Грузится в регистр R0 адрес переменной - командой LDR2.Далее грузится значение оперативки по искомому адресу, но уже в регистр R13.Т.к. в R0 уже сидит адрес, то можно загрузить еще переменную, адрес которой недалеко.... для этого используется та же команда LDR, только со смещением... Вот в такуой конструкции автопоиск адресов использования BinEdit'a уже бессилен имей ввидуЕсли смещения используемого самой командой LDR не хватает, может использоваться арифметика, напр. с адресом в регистре можно сделать любые махинции - как с обычным числом. и уж только тогда, когда оптимизатор кода не сможет получить переменную - идет явное указание ее в коде - такая конструкция займет 8 байт (4 - адрес и по 2 на две LDR). Ковыряю e630 Link to comment Share on other sites More sharing options...
EvgeniyZ Posted April 10, 2006 Author Report Share Posted April 10, 2006 Хацкер, Спасибо, что-то понял, но что-то не совсем, надо разобраться!Но как определить буфер это или глобальная переменная? Только по объему между адресами этой и следующей сигнатуры?Глобальные переменные (от 1 до 4-х байт), а как узнать сколько моя байт при портировании патча? Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
Хацкер Posted April 12, 2006 Report Share Posted April 12, 2006 Глобальные переменные (от 1 до 4-х байт), а как узнать сколько моя байт при портировании патча? по командам загрузки или записи Чтение значения памяти / Запись в память Load RegisterLDR – Загрузка в регистр т.н. «слова» (word), т.е. значения из 4-х байт, соответственно команда может адресоваться к адресам кратным 4 байтам (берётся 4 байта) LDRH – Загрузка в регистр т.н. «полуслова» (half word), т.е. значения из 2-х байт, соответственно команда может адресоваться к адресам кратным 2 байтам (берётся 2 байта) LDRB – Загрузка в регистр 1 байта, может адресоваться с точностью до байта (берётся 1 байт). Store RegisterСоответственно аналогичная группа команд STR, STRH, STRB служит для записи значения из регистра в адрес памяти. Если командами загрузки грузить можно значение как из кода самой прошивки, так и значение опертивки, то писать можно только в оперативку - иначе перезагруз Ковыряю e630 Link to comment Share on other sites More sharing options...
EvgeniyZ Posted April 15, 2006 Author Report Share Posted April 15, 2006 Хацкер, В патче "Батарейка на 16 делений" написано по адресу: 0x102B4FD6следующая команда ассемблера: BLX ___rt_udiv, где ___rt_udiv для X700XEEK6 равно: 0x10DBD754,это, как я понимаю, переход на подпрограмму ___rt_udiv, после компиляции получается код:00F01EE8.Вот и вопрос: Как мне в компиляторе записать команду BLX ___rt_udiv, чтобы получить такой же код? (А для прошивки X700XEFA1 я уж по аналогии сделаю) Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now