Цель этой темы помочь разобраться начинающим (не только) патчеписателям в этом не легком деле. Задавайте свои вопросы. По возможности будем отвечать. Только не надо лить воду. Задаете конкретный вопрос, получаете конкретный ответ.
4. http://developers.sgh.ru - инфа по патчингу. Портал только открылся, но будет пополнятся. Специализируются на Самсунгах, но есть и общая для всех инфа. http://binedit.sgh.ru - дизассемблер и не только от AlexeyK. Также умеет работать с vkp патчами.
1.Кидаем ИмяПроши.mbn на readDB3150.exe 2.Из папки ИмяПроши.out берем phone_app.cxc 3.Открываем любимым хекс-редактором. 4.Отрезаем кусок от 0 до строки,содержащей повторяющуюся последовательность 18 F0 9F Е5.Например на W760 R3DA026 это смещение 2000. 5.Сохраняем как raw 6.Открываем уже своим любимым инстурментом .
Народ! Давайте без флейма, пишем и задаем вопросы, только после того как прочтете все что выше выложено и даны ссылки на материал, и после того как сами уже попробовали и все детально обдумали!
НЕ надо задавать вопросов, а с чего мне начать, ферштейн?
хо, прочитал всё, вижу тут патчи только портируют, вроде ясно, у меня w810 хочу спросить: 1. если в thumb LDR R0, адрес(кратный 4)+1 и после BLX R0, то режим в вызываемой процедуре останется thumb, а без +1 - arm, если так тогда на выходе из функи он тоже arm будет? напомните как тогда вернуть thumb на выходе из такой процедуры... и какие адреса в регистр для BLX можно ложить (диапазон есть или как, зависит от режима?) 2. как передавать параметры функциям, из либы которые (через регистры, стек, или как) 3. подскажите может, что такое лучше перехватить для исполнения своего кода (на что повесить, для тестов) 4. и ещё, ФС адресутся как-то? нельзя ли тупо положить файл, бинарник допустим, на который и передавать управление, 32Mb ведь в ARM, достанет, так нельзя? (как там в FAT файлы себя ведут, надо слить elf-ом fs глянуть, если он на одном месте будет и адрес его начала известен, можно считай замейном обмениваться..)
и может кто знает как основные инструкции кодируются (поделитесь) допустим инструкция BL: 00F400F8 (min=-3,99Mb) и FFF3FFFF (max=+3,99Mb), попроще B: 00E4 (min) FFE3 (max),... как смещение считается вроде знаю, т.е. можно что-то и ручками делать (+ push/pop лёгкие +копипаст других) или просвятите: может в иде можно сам код как-то писать без использования компилятора
Добавлено 17.6.10 22:50
вот естьПатч:
;W810 SW-R4EA031 ;rapid Access to the functions of the telephone across the number of keys 2-9 in the way in wait ;one added the appointment of the events ;v.2 ;(c) Sic ;(p) andhe7 ;thanks ShadownPlayer, Edgpaez, http://www.se-developers.net, seusers.com
вобщем было: if (клавиша_2) {берём адрес клавиши_2} else if (...) {...} else if (клавиша_9) {берём адрес клавиши_9} а теперь вот так: адрес клавиши_2 + (код клавиши - код клавиши_2)*4
вобще без синего (наверное и красного) не ребутит, не виснет, не тормозит, всё работает как надо, вопрос насколько это критично/неэффективно? Как я понимаю, в функцию при нажатии не только клавиш 2-9 (ну 0 и 1 скорее всего, может и всех) передавалось бы невалидное имя ссылки (какашка), которое грузилось бы не из адресов данных (выше/ниже) а зачем то сравнение R0-R4, и что там вызывается по BCC не знаю...
Патч:
;W810 SW-R4EA031 ;rapid Access to the functions of the telephone across the number of keys 2-9 in the way in wait ;one added the appointment of the events ;v.3 ;(c) Sic ;(p) andhe7 ;(e) mugen ;thanks ShadownPlayer, Edgpaez, http://www.se-developers.net, seusers.com
А плюс прошлой реализации - это возможность повесить дополнительную функу для конкретной клавиши, как раз вместо того что красным, туда вписать LDR R7, addr(2-9) и BLX, и дорисовать адреса фунок в конце данных в addr(2-9), а в моём случае будет 1 функция на любую из клавиш 2-9... ну для простых пользователей это не так важно
сор за оверпост, но вы ответьте и на те вопросы, плз
blacklizard, MOVL is not instruction, it is macros. When you write 'movl rx, value' compiler put in rx needed value as he can. If you ask about how to see instructions in ida - you need to disable macros in settings of ida :)
Nokia N900 Спасибо: Va_st, Therion. ---------------------------------- WMR 112182965768
;Замена графики телефона ;В папку ini (/usb/other/ini), НА ТЕЛЕФОНЕ, кладём файл GFX.ini ;В GFX.ini указываем путь к папке с заменяемой графикой ;Например: [GFX_Folder]: /usb/other/IMG ;посде пути не забываем ставить Enter ;В эту папку ложим иконки XXXX.PNG(XXXX.GIF, XXXX.JPG), ;где XXXX - номер (hex) заменяемой картинки ;Перезагружаем телефон ;Ver 1.1 ;Поправлен баг с ребутом, если файл GFX.ini не был найден ;Поправлен баг с ребутом режиме передачи файлов ;(с) Joker XT ;Ver 2.0 ;(c) Vertexbz ;Графика грузится теперь при первом старте телефона (в т.ч. меню запуска) ;Изображения могут быть разных разрешений
Значит создал исходник, нареканий нет. Но... не работает. Значит скомпилил на ту же прошу. нашел отличия в байтах. Но отличия только в байтах, а в иде смотрится одинаково.
оригинал Код:
ROM:45DA067C 40 0F 80 E3 ORR R0, R0, #0x100
порт Код:
ROM:45DA067C 01 0C 80 E3 ORR R0, R0, #0x100
И так во всех похожих местах ( ORR R0, R0, )... Из-за чего? Когда создавал исх, то он сам задал этому участку CODE32. Насильно я этим не занимался.
PRO100light, я, скорее, говорил, что лишнее - трогать эту галочку. что касается movl, то использование этого макроса с одним и тем же значением может реализовываться большим количеством вариантов. например MOVL R0,0x100:
mov r0,1 add r0,0xFF
mov r0,2 add r0,0xFE
mov r0,10 add r0,0xF0
mov r0,1 lsl r0,r0,8
mov r0,2 lsl r0,r0,7
mov r0,4 lsl r0,r0,6
все эти пары команд в результате дают 0x100 в R0
теперь об orr. оба этих варианта, опять же, выполняют абсолютно одно и то же. если у тебя не работало, то не из-за orr.
;W595 SW-R3EF001 ;Add left softkey "Minim. for playing music in FileManager ;To stop playing you must go to book "File Options" from Activity Menu ;(!) Need to use patch BookManager + Minimalize books ;v.1 ;(c) jamesbond22 ;Oryginal idea by yener90
Вы не можете начинать темы. Вы не можете редактировать свои сообщения. Вы не можете создавать опросы. Вы не можете вкладывать файлы в сообщения. Вы не можете отвечать на сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать.