Главная Регистрация Вход Выход Добавить новость RSS  
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Tamerlan, sid_walkmaker  
SE-форум » Мастер FACK » FAQ обо всем » Уроки по патчингу (Урок 1. Разбор патча)
Уроки по патчингу
TamerlanДата: Пятница, 18.01.2008, 01:18 | Сообщение # 1
Администратор
Группа: Admin
Сообщений: 99
Репутация: 32767
Статус: Offline
Первый урок будет посящен разбору патча... Я решил не брать какой-нить замудрённый патч ))

Вот исходник патча:
;K750 SW-R1CA021
;Отключение плеера/радио при отсоединении гарнитуры
;© IronMaster
;(p) Joker XT

patch equ 0x451E1FA0

org 0x4505BF5A
bl patch

org patch
STRB R5, [R4]
push {r0-r7}
ldr r0, isAudioPlayerBook
bl 0x4504D3B8 ;findBook
cmp r0, 0
beq next
bl 0x44E7AAA4 ;freeBook

next:
ldr r0, isFmRadioBook
bl 0x4504D3B8 ;findBook
cmp r0, 0
beq ex
bl 0x44E7AAA4 ;freeBook

ex:
pop {r0-r7}
ldr r7, rest
mov pc, r7

align 4
rest DCD 0x4505BF8C+1
isAudioPlayerBook DCD 0x44F55518+1
isFmRadioBook DCD 0x4511EBB8+1

Теперь начнём разбирать))

org 0x4505BF5A
bl patch
Это врезка патча, собсно с помощью неё патч изнаёт када нужно запускаться )

После org patch идёт тело патча, те то, что будет выполняться при отсоединении гарнитуры...

STRB R5, [R4] - это данные, который мы затёрли врезкой... Их всегда нужно восстанавливать!

ldr r0, isAudioPlayerBook
bl 0x4504D3B8 ;findBook
cmp r0, 0
beq next
bl 0x44E7AAA4 ;freeBook

Тут идёт первая проверка на то, не запушен ли Плеер.
Ф-ией findBook мы проверяем, создана ли AudioPlayerBook, если бука создана, то ф-ия findBook вернёт нам указатель на book, елси же нет, то она вернёт 0...

cmp r0, 0
beq next

Тут проверяем не ноль ли вышел из функции )) Если же ноль, то идём на вторую проверку... А если не ноль, но освобождаем буку ф-ией freeBook.

Вторая проверка аналогична первой, только там мы проверяем не включено ли Радио.

ldr r7, rest
mov pc, r7

Этой крнструкцией мы переходим на адрес rest.

align 4
rest DCD 0x4505BF8C+1
isAudioPlayerBook DCD 0x44F55518+1
isFmRadioBook DCD 0x4511EBB8+1

align 4 - это выровнять по адресу кратному 4.
Ну и собсно дальше адреса ф-ий...

Вроде всё ) Если что непонятно, пишите )) Дополним, переделаем...


Я не вижу телефон без тюнинга, стандарт это фигня!



Убедительная просьба, делайте Backup GDFS!!!
Если я тебе помог, в репу ++ бы мне помог
 
SE-форум » Мастер FACK » FAQ обо всем » Уроки по патчингу (Урок 1. Разбор патча)
  • Страница 1 из 1
  • 1
Поиск:
© 2008 All For UcoZ