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

Портирование функций с помощью плагина для IDA page/sub find : Эльфостроение : Эльфы : Форум : Для Sony Ericsson патчи эльфы моддинг прошивка
/  Список форумов
   /  Эльфы
      /  Эльфостроение
   /  Портирование функций с помощью плагина для IDA page/sub find
На печать 
Правила 
Страница 1 из 9: [1] 2 3 4 5 ... 9 »

zapret


Moder


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




 
  #1 [27.06.09, 00:11] Портирование функций с помощью плагина для IDA page/sub find   

 
Смотрим второй пост.




samsung galaxy S3 4.2.2
W580\K750i\k550

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

MaxxxS


Patcher


Регистрация: 24.1.09
Сообщений: 168
Репутация: 784
Откуда: Курган




 
  #2 [27.06.09, 00:15] Re: Портирование функций с помощью плагина для IDA page/sub   

 
Портирование функций с помощью плагина для IDA page/sub finder.
Данный метод хорошо использовать для межплатформенного порта.

Если вы впервые пользуетесь этой программой, то необходимо скачать несколько дополнений:
- ida_babeldr от den_po (позволяет не париться с оффсетом и не надо переводить прошивку в raw) файл babeldr.ldw положить в \%ваша папка%\IDA\loaders\
- pagesub от den_po. положить в \%ваша папка%\IDA\plugins\

Итак, приступим. Открываем прошивку в IDA, в поле тип файла выбираем SonyEricsson firmware file (babeldr.ldw). В поле Processor type выбираем ARM processors:-> OK -> Yes
Hастраиваем далее: Options -> General -> IDA Options во вкладке Dissasembly в разделе Display disassembly line parts необходимо поставить галочку "Auto comments" и поставить в поле Number of opcode bytes 4. Для отображения хекс-кода в дисасме (опционально)
Далее Options -> general -> analysis -> processor specific analysis options -> disable pionter referencing, ставим туда галку, и нажимаем кнопку: Options -> general -> analysis -> reanalyze program

Теперь запускаем плагин: Edit -> Plugins -> sub/page finder
Некоторое время придётся подождать (от 5 до 10 минут, в зависимости от платформы телефона, прошивку которого вы открываете и мощности компьютера)
То же самое проделываем с прошивкой на которую портируем.

Приготовления окончены, теперь, собственно, сам процесс портирования:

Рассмотрим простенький порт функции 366: int IrDa_GetState(char *state); с K810 SW-R8BA024 на W810 SW-R4EA031.
Берём функу для K810
Патч: 
0D98: 00000000 E5693E45 ; 366: int IrDa_GetState(char *state);

переворачиваем её - должно получиться 453E69E5, В программе нажимаем G и переходим по этому адресу. мы должны увидеть
Код: 
ROM:453E69E4
ROM:453E69E4             sub_453E69E4                            ; CODE XREF: sub_44EF0884+2j
ROM:453E69E4                                                     ; sub_453E7A84+F2p
ROM:453E69E4                                                     ; DATA XREF: ...
ROM:453E69E4 00 B5                       PUSH    {LR}            ; Push registers
ROM:453E69E6 01 22                       MOVS    R2, #1          ; Rd = Op2
ROM:453E69E8 01 1C                       ADDS    R1, R0, #0      ; Rd = Op1 + Op2
ROM:453E69EA EE 20                       MOVS    R0, #0xEE       ; Rd = Op2
ROM:453E69FC 19 F5 B8 FD                 BL      sub_45100570    ; Branch with Link

Если нет, то поднимаемся на один байт вверх, нажимаем С, не забыв при этом указать, что нам нужен Thumb-режим (для этого нажимаем Alt+G и выбираем 1).
Получилась наша функа. Эти циферки мало что говорят человеку не занимающемуся программированием. Так что будем искать что-то более осмысленное.
Теперь переходим в графический режим: нажимаем на кнопку со структурой или пробел.
Наверху блок-схемы 3 кнопки: нам нужна кнопка с черными стрелочками "Jump to xref" Нажимаем её и видим окошко с 3-мя адресами. Переходим по первой строчке на адрес 44EF0884, повторяем процедуру, переходим дальше. Видим что теперь что переход осуществляется в более менее осмысленную функцию pg_ObEx_IR_AlignDevices. Если интересно, то можно нажать на кнопку ещё раз. Там будет ивент. Мы пришли к самому началу.
Теперь берём и копируем название pg_ObEx_IR_AlignDevices, переходим в окошко с прошивкой от W810, нажимаем Alt+T вставляем наш текст -> ставим галку на Find all occurences -> OK.
После продолжительного ожидания появляется окошко, где мы видим все строки, что содержат данные слова. Из них функций всего 3. Просматриваем их и видим, что больше всего похожа на функцию от K810 та, что находится по адресу 44FD373C.
Теперь смотрим куда идти дальше: в прошивке К810 нажимаем кнопки назад (Esc) вперёд (Ctrl+Enter) видим выделенную жёлтым sub_44EF0884. Она находится в третьем блоке снизу и второй вызов снизу (или говоря проще второй BL sub_xxxxxxxx). Смотрим то же место в прошивке W810. Нашли строчку
Код:
ROM:44FD3794 01 F0 14 FB                 BL      sub_44FD4DC0    ; Branch with Link
кликаем по ссылке и переходим по ней вперёд. Далее кликаем на off_44FD4DC4 и на sub_45535C3C+1.
Вот мы и пришли к нашей искомой функе!
Код: 
ROM:45535C3C             sub_45535C3C                            ; CODE XREF: sub_44FD4DC0+2j
ROM:45535C3C                                                     ; pg_IR_AutoOffTimerExpired__PAGE_EXIT_EVENT+Ep
ROM:45535C3C                                                     ; DATA XREF: ...
ROM:45535C3C 00 B5                       PUSH    {LR}            ; Push registers
ROM:45535C3E 01 22                       MOVS    R2, #1          ; Rd = Op2
ROM:45535C40 01 1C                       ADDS    R1, R0, #0      ; Rd = Op1 + Op2
ROM:45535C42 EE 20                       MOVS    R0, #0xEE       ; Rd = Op2
ROM:45535C44 20 F0 76 F9                 BL      sub_45555F34    ; Branch with Link

Структура немного не совпадает - это из-за разности платформ. Но для большей уверенности что мы нашли правильно, кликаем на sub_45555F34 и идём вперёд до адреса 450973CC. В прошивке от K810 делаем то же самое. Видим что по адресу 4510061C для К810 и 450973CC для W810 одинаковые функи, значит мы всё нашли правильно.
Теперь остаётся записать её в либу.
Берём наш адрес 45535C3C, прибавляем к нему 1 получается 45535C3D, переворачиваем 3D5C5345. получилось
Патч: 
;W810 SW-R4EA031
;(c) Hussein , IronMaster
;(p) %username%
0D98: FFFFFFFF 3D5C5345 ; 366: int IrDa_GetState(char *state);

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

PS: Выражаю огромную благодарность den_po, UltraShot, Random, awg, MysticBeast и остальным за то что научили этой мудрёной науке добрыми советами ;-) и посылами в нужные темы :-)


Сообщение скопировал zapret007 из темы: FAQ. Наиболее легкий способ портирования функций




SE Пешиход 810 [R4EA031fix] ЭП v1.9.2
Philips W632_1228_V13_root Android 2.3.5
Спасибо сказали: -Sanek-, zapret007, InvisibleW, UltraShot, RandoM, lisaus, Pavel2509, TahaSpawn, Blend, EWGEN, Sandre, Metaler, MNS81

zapret


Moder


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




 
  #3 [27.06.09, 00:15] Re: Портирование функций с помощью плагина для IDA page/sub   

 
думаю отдельным топом будет лучше.




samsung galaxy S3 4.2.2
W580\K750i\k550

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

InvisibleW


Developer


Регистрация: 14.3.08
Сообщений: 123
Репутация: 457
Откуда: Киев




 
  #4 [27.06.09, 02:06] Re: Портирование функций с помощью плагина для IDA page/sub   

 
а как действовать если в самом начале не все так красиво идет и ты попадаеш не на sub а на:
Код:
18 D0                       BEQ     loc_44EA4F94    ; Branch

тут надо перейти по адресу 44EA4F94? если так, то там нету таких "осмисленних" названий, поскажите что делать в таком случае? :-(

[ Редактировано InvisibleW в 27.6.09 01:07 ]




Sony Ericsson W810 SW-R4DB005 & Nokia 5800 XM 52.0.101 & HTC Desire

dezertir


Новичок


Регистрация: 24.9.08
Сообщений: 3
Репутация: -7





 
  #5 [27.06.09, 18:48] Re: Портирование функций с помощью плагина для IDA page/sub   

 
Было бы хорошо сделать видео, тогда точно запросов в портирование будет минимум))
Легче было бы понять, наглядней.



noa


Expert


Регистрация: 31.8.07
Сообщений: 740
Репутация: 259
Откуда: Москва - Подольск




 
  #6 [27.06.09, 20:03] Re: Портирование функций с помощью плагина для IDA page/sub   

 
dezertir, типо читать уже очень сложно?




This is the end, my only friend, the end...

dezertir


Новичок


Регистрация: 24.9.08
Сообщений: 3
Репутация: -7





 
  #7 [27.06.09, 20:25] Re: Портирование функций с помощью плагина для IDA page/sub   

 
Не сложно, но не очень понятно, по видео можно сразу же пошагово научиться, а читать придётся раз 100 т.к. сразу не понять.



-Sanek-


Пользователь


Регистрация: 8.5.09
Сообщений: 83
Репутация: 104
Откуда: Новороссийск




 
  #8 [27.06.09, 22:54] Re: Портирование функций с помощью плагина для IDA page/sub   

 
dezertir, прочитай 100 раз:-), так лучше будет,чем ты видео посмотришь)) Учиться по видео слишком низкий уровень,нужно почитать,вникнуть...




Дуракам закон не писан! Если писан, то не читан. Если читан, то не понят. Если понят, то не так!
---
SE K790 R8BF003+ SE W995 R1GA026

snzuev


Пользователь


Регистрация: 29.12.08
Сообщений: 57
Репутация: 176
Откуда: Санкт-Петербург




 
  #9 [27.06.09, 22:58] Re: Портирование функций с помощью плагина для IDA page/sub   

 
Застрял на этапе- В программе нажимаем G и переходим по этому адресу. мы должны увидеть ....а вижу:
ROM:453E69F5 ?? % 1
Нажимаю Alt+G появляется segment reg volume-выбора 1 нет!Помогите!




В отпуске

RaANdOoM


Developer


Регистрация: 26.12.07
Сообщений: 150
Репутация: 1422
Откуда: Люберецкий




 
  #10 [28.06.09, 01:03] Re: Портирование функций с помощью плагина для IDA page/sub   

 
snzuev,
Processor type: ARM Processor ARM710a
Это выбирал? Внимательней.




Sе Nokia N900
Спасибо: Va_st, Therion.
----------------------------------
WMR 112182965768
Страница 1 из 9: [1] 2 3 4 5 ... 9 »



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

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