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

[Tutorial] Создание ASM файла (исходника). : Патчестроение : Патчи : Форум : Для Sony Ericsson патчи эльфы моддинг прошивка
/  Список форумов
   /  Патчи
      /  Патчестроение
   /  [Tutorial] Создание ASM файла (исходника).
На печать 
Правила 
Страница 6 из 9: « 1 2 3 4 5 [6] 7 8 9 »

HierOS


Patcher/Moder


Регистрация: 9.5.07
Сообщений: 1279
Репутация: 761
Откуда: ЖелезЯка




 
  #51 [17.02.09, 20:42] [Tutorial] Создание ASM файла (исходника).   

 
1.- Патч:

;W580 SW-R8BE001
;Play a sound when opening/closing slide.
;In tpa/preset/system/sound put files slideropen.mp3 and sliderclose.mp3
;v 1.3
;Corrected detection of isAudioPlayerBook
;© John North
;(e) HierOS (correct mismatch)


452add9c: 26D0 24D0
452adde8: 2720CCE02820CAE0 004B18474109C045


45c00940: 0000000000000000 10B4114B98470028
45c00948: 0000 11D1
;45c00948: 0000 C046
45c0094A: 000000000000 1048114B9847
45c00950: 00000000000000000000000000000000 00280CD10E480F4B9847002807D10EA1
45c00960: 0000000000000000 3F2C00D014A10648
45c00968: 00 32
45c00969: 00000000000000 22064B984710BC
45c00970: 00000000000000000000000000000000 2720402C00D12820004B184787DF2A45
45c00980: 00000000000000000000000000000000 FC9C7145354800450555FD44554EF344
45c00990: 00000000000000000000000000000000 09AD0F4599DC2A4573006C0069006400
45c009a0: 00000000000000000000000000000000 650072006F00700065006E002E006D00
45c009b0: 00000000000000000000000000000000 700033000000FFFF73006C0069006400
45c009c0: 00000000000000000000000000000000 6500720063006C006F00730065002E00
45c009d0: 0000000000000000 6D00700033000000


Это комментарии. Каждому комментарию в патче должна предшествовать точка с запятой. Вы можете написать комментарии в любой части патча.

Врезки и модификации кода прошивки. Изменения сделанные в коде прошивки, которые означают, что оно заменяют байты в фактических функциях, которые используют наши телефоны.

Тело патча. Это - новый код, написанный в конце прошивки нашего телефона, в пустой свободной области.



2.- Понятия:

У комментариев нет никаких функциональных возможностей в теле патча, кроме как указания автора,имени,модели и прошивки,а также дополнительной информации о нём.

Врезки и модификации кода прошивки делают патчеры необходимые для работы новых патчей. Иногда патчеры добавляют в прошивку новые функции, прописывая их в свободную зону прошивки. Новый код называют Телом патча. Патчеры пишут переход туда из прошивки, который по большей части выполняет только переадресацию, после чего следует выполнение нового кода и переадресация к исходной функции, не ломая дальнейший код (бывают и исключения).

Тело патча - это дополнительный код который записывают в свободную область. Для задействования кода патчеры пишут врезки,который переадресует исходную функцию на новую. В большинстве случаев после того, как новый код был выполнен происходит переадресация назад к старому коду,чтобы не оборвать выполнение функции и не вызвать какой-либо сбой.



3.- Основы ассемблирования:

Важной вещью, чтобы понять является cо-отношение между функцией и используемым положением байт.

У каждого байта в наших прошивках есть определенное значение и причина существования, они классифицированы в Данных и Коде. Логика выполнения задаётся процессором,какой байт распознавать как Код,а какой как Данные.
Каждая функция в нашей прошивке использует место (в байтах).

ARM Процессоры (используемые в наших телефонах) имеют 2 'Режима Выполнения' (понимать термин вам не нужно): 16-битное (вызывает THUMB) и 32-битное (вызывает ARM) выполнение. Это означает, - то,что некоторые (большая часть) кода прошивки написаны в виде 16-битных (2 байта) функциях и некоторый другой код в виде 32-битных (4 байта) функций.
Мы не будем касаться Режима Выполнения ASM, так как мы почти не используем его, и продолжим с Режимом Выполнения THUMB.

В Режиме Выполнения THUMB (16-бит) Функции Ассемблера используют 2 байта пространства, таким образом каждые 2 байта THUMB кода, процессор обрабатывает как функцию.



4.- Интерпретация:

Тот код что находится в наших VKP патчах должны изменить какие-то байты в прошивке,изменив при этом функцию нашего телефона. Все значения написаны в HEX-виде.
452add9c: 26D0 24D0

Это часть нашего патча, заменяет 26D0 на 24D0 по адресу 452ADD9C в нашей прошивке.
26D0 - 2 байта, и если мы дизассемблируем их получаем функцию:
ROM:452ADD9C 26 D0 BEQ loc_452ADDEC

ROM:452ADD9C -> Расположение
26D0 -> Байты
BEQ -> Инструкция
loc_452ADDEC -> Параметр

И когда мы применяем патч, 26D0 изменяются на 24D0, и получаем следующее:
ROM:452ADD9C 24 D0 BEQ loc_452ADDE8

Единственное, что изменилось, был параметр функции. Как вы могли заметить, параметр - смещает адрес: 452ADDE8.


5.- Процесс:

• Открываем IDA и загружаем необходимую прошивку.
• Применяем патч используя IDC скрипт 'Apply VKP Patch'.
• Далее Menu > Options > General > 'Number of opcode bytes:' изменяем на 4. (Число байт отображаемых у каждой функции слева).

• Переходим к первой врезке патча: 452add9c. (Горачая клавиша: G)
• Дизассемблируем (Горячая клавиша: C)
• Выбираем строку соответствующую байтам, которые указаны в патче:
452add9c: 26D0 24D0


Это:
Код:
ROM:452ADD9C             ; ---------------------------------------------------------------------------
ROM:452ADD9C 24 D0                       BEQ     loc_452ADDE8

• Нажимаете Alt + F10 и создаёте ваш первый .asm файл. Сохраните его где-нибудь.

В своём файле вы увидите следующее:
Код: 
;
; +-------------------------------------------------------------------------+
; |    This file is generated by The Interactive Disassembler (IDA)        |
; |    Copyright (c) 2007 by DataRescue sa/nv,    <ida@datarescue.com>        |
; | Licensed to: Mach EDV Dienstleistungen, Jan    Mach, 1    user, adv, 11/2007  |
; +-------------------------------------------------------------------------+
;


; ---------------------------------------------------------------------------
        BEQ    loc_452ADDE8


• Очищаем его:
Код:
        BEQ    0x452ADDE8


• И добавляем адрес расположения следующим образом:
Код:
org 0x452ADD9C
        BEQ    0x452ADDE8


• Переходим на вторую врезку: 452adde8.
• Смотрим значения патча.
452adde8: 2720CCE02820CAE0 004B18474109C045


• Дизассемблируйте, если это ещё не сделано.
• Выберите всё это:
Код:
ROM:452ADDE8             loc_452ADDE8                            ; CODE XREF: ROM:452ADD9Cj
ROM:452ADDE8 00 4B                       LDR     R3, off_452ADDEC
ROM:452ADDEA 18 47                       BX      R3
ROM:452ADDEA             ; ---------------------------------------------------------------------------
ROM:452ADDEC 41 09 C0 45 off_452ADDEC    DCD loc_45C00940+1      ; DATA XREF: ROM:loc_452ADDE8r

• Нажмите Alt + F10 и создайте ваш второй файл.
• Приведите его в порядок и создайте переход:
Код:
org 0x452ADDE8
        LDR    R3, off_452ADDEC
        BX    R3

off_452ADDEC    DCD 0x45C00940+1


• Переходим на третью врезку: 45c00940
Примечание: Эта врезка переходит в пустую область прошивки,где расположено тело патча.
Примечание2: Во все значения после перехода в тело патча можно делать переход между ними, всё это функция написанная Джон'ом North'ом (Автор)..


• Дизассемблируйте, если это ещё не сделано.
• Выделяем тело патча и создаём третий .asm (Alt + F10).

вот так:
Код: 
ROM:45C00940             loc_45C00940                            ; CODE XREF: ROM:452ADDEAj
ROM:45C00940                                                     ; DATA XREF: ROM:off_452ADDECo
ROM:45C00940 10 B4                       PUSH    {R4}
ROM:45C00942 11 4B                       LDR     R3, off_45C00988
ROM:45C00944 98 47                       BLX     R3
ROM:45C00946 00 28                       CMP     R0, #0
ROM:45C00948 C0 46                       NOP
ROM:45C0094A 10 48                       LDR     R0, off_45C0098C
ROM:45C0094C 11 4B                       LDR     R3, off_45C00994
ROM:45C0094E 98 47                       BLX     R3
ROM:45C00950 00 28                       CMP     R0, #0
ROM:45C00952 0C D1                       BNE     loc_45C0096E
ROM:45C00954 0E 48                       LDR     R0, off_45C00990
ROM:45C00956 0F 4B                       LDR     R3, off_45C00994
ROM:45C00958 98 47                       BLX     R3
ROM:45C0095A 00 28                       CMP     R0, #0
ROM:45C0095C 07 D1                       BNE     loc_45C0096E
ROM:45C0095E 0E A1                       ADR     R1, aSlideropen_mp3 ; "slideropen.mp3"
ROM:45C00960 3F 2C                       CMP     R4, #0x3F
ROM:45C00962 00 D0                       BEQ     loc_45C00966
ROM:45C00964 14 A1                       ADR     R1, aSliderclose_mp ; "sliderclose.mp3"
ROM:45C00966
ROM:45C00966             loc_45C00966                            ; CODE XREF: ROM:45C00962j
ROM:45C00966 06 48                       LDR     R0, off_45C00980
ROM:45C00968 32 22                       MOVS    R2, #0x32
ROM:45C0096A 06 4B                       LDR     R3, off_45C00984
ROM:45C0096C 98 47                       BLX     R3
ROM:45C0096E
ROM:45C0096E             loc_45C0096E                            ; CODE XREF: ROM:45C00952j
ROM:45C0096E                                                     ; ROM:45C0095Cj
ROM:45C0096E 10 BC                       POP     {R4}
ROM:45C00970 27 20                       MOVS    R0, #0x27
ROM:45C00972 40 2C                       CMP     R4, #0x40
ROM:45C00974 00 D1                       BNE     loc_45C00978
ROM:45C00976 28 20                       MOVS    R0, #0x28
ROM:45C00978
ROM:45C00978             loc_45C00978                            ; CODE XREF: ROM:45C00974j
ROM:45C00978 00 4B                       LDR     R3, off_45C0097C
ROM:45C0097A 18 47                       BX      R3
ROM:45C0097A             ; ---------------------------------------------------------------------------
ROM:45C0097C 87 DF 2A 45 off_45C0097C    DCD loc_452ADF86+1      ; DATA XREF: ROM:loc_45C00978r
ROM:45C00980 FC 9C 71 45 off_45C00980    DCD aTpaPresetSyste     ; DATA XREF: ROM:loc_45C00966r
ROM:45C00980                                                     ; "/tpa/preset/system/sound"
ROM:45C00984 35 48 00 45 off_45C00984    DCD loc_45004834+1      ; DATA XREF: ROM:45C0096Ar
ROM:45C00988 05 55 FD 44 off_45C00988    DCD loc_44FD5504+1      ; DATA XREF: ROM:45C00942r
ROM:45C0098C 55 4E F3 44 off_45C0098C    DCD unk_44F34E55        ; DATA XREF: ROM:45C0094Ar
ROM:45C00990 09 AD 0F 45 off_45C00990    DCD unk_450FAD09        ; DATA XREF: ROM:45C00954r
ROM:45C00994 99 DC 2A 45 off_45C00994    DCD loc_452ADC98+1      ; DATA XREF: ROM:45C0094Cr
ROM:45C00994                                                     ; ROM:45C00956r
ROM:45C00998 73 00 6C 00+aSlideropen_mp3 unicode 0, <slideropen.mp3>,0
ROM:45C00998 69 00 64 00+                                        ; DATA XREF: ROM:45C0095Eo
ROM:45C009B6 FF                          DCB 0xFF
ROM:45C009B7 FF                          DCB 0xFF
ROM:45C009B8 73 00 6C 00+aSliderclose_mp unicode 0, <sliderclose.mp3>,0
ROM:45C009B8 69 00 64 00+                                        ; DATA XREF: ROM:45C00964o


Ваш asm файл должен быть похожим на такой:

Код: 
org 0x45C00940
loc_45C00940:
        PUSH    {R4}
        LDR    R3, off_45C00988
        BLX    R3
        CMP    R0, 0
        NOP
        LDR    R0, off_45C0098C
        LDR    R3, off_45C00994
        BLX    R3
        CMP    R0, 0
        BNE    loc_45C0096E
        LDR    R0, off_45C00990
        LDR    R3, off_45C00994
        BLX    R3
        CMP    R0, 0
        BNE    loc_45C0096E
        ADR    R1, aSlideropen_mp3
        CMP    R4, 0x3F
        BEQ    loc_45C00966
        ADR    R1, aSliderclose_mp

loc_45C00966:
        LDR    R0, off_45C00980
        MOVS    R2, 0x32
        LDR    R3, off_45C00984
        BLX    R3

loc_45C0096E:
        POP    {R4}
        MOVS    R0, 0x27
        CMP    R4, 0x40
        BNE    loc_45C00978
        MOVS    R0, 0x28

loc_45C00978:
        LDR    R3, off_45C0097C
        BX    R3

align 4

off_45C0097C    DCD 0x452ADF86+1
off_45C00980    DCD 0x45719CFC
off_45C00984    DCD 0x45004834+1
off_45C00988    DCD 0x44FD5504+1
off_45C0098C    DCD 0x44F34E55
off_45C00990    DCD 0x450FAD09
off_45C00994    DCD 0x452ADC98+1

aSlideropen_mp3    du "slideropen.mp3",0

align 4

aSliderclose_mp    du "sliderclose.mp3",0


Примечание: Добавьте 'align 4' перед блоками Данных или Значений.

• Совместите все созданные вами файлы и добавьте 'include "x.inc"' в самом начале:

Код: 
include "x.inc"

org 0x452ADD9C
        BEQ    0x452ADDE8


org 0x452ADDE8
        LDR    R3, off_452ADDEC
        BX    R3

off_452ADDEC    DCD 0x45C00940+1


org 0x45C00940
loc_45C00940:
        PUSH    {R4}
        LDR    R3, off_45C00988
        BLX    R3
        CMP    R0, 0
        NOP
        LDR    R0, off_45C0098C
        LDR    R3, off_45C00994
        BLX    R3
        CMP    R0, 0
        BNE    loc_45C0096E
        LDR    R0, off_45C00990
        LDR    R3, off_45C00994
        BLX    R3
        CMP    R0, 0
        BNE    loc_45C0096E
        ADR    R1, aSlideropen_mp3
        CMP    R4, 0x3F
        BEQ    loc_45C00966
        ADR    R1, aSliderclose_mp

loc_45C00966:
        LDR    R0, off_45C00980
        MOVS    R2, 0x32
        LDR    R3, off_45C00984
        BLX    R3

loc_45C0096E:
        POP    {R4}
        MOVS    R0, 0x27
        CMP    R4, 0x40
        BNE    loc_45C00978
        MOVS    R0, 0x28

loc_45C00978:
        LDR    R3, off_45C0097C
        BX    R3

align 4

off_45C0097C    DCD 0x452ADF86+1
off_45C00980    DCD 0x45719CFC
off_45C00984    DCD 0x45004834+1
off_45C00988    DCD 0x44FD5504+1
off_45C0098C    DCD 0x44F34E55
off_45C00990    DCD 0x450FAD09
off_45C00994    DCD 0x452ADC98+1

aSlideropen_mp3    du "slideropen.mp3",0

align 4

aSliderclose_mp    du "sliderclose.mp3",0


• Организуйте подобным образом, добавляя EQU для адресов:

Код: 
include "x.inc"

branch        equ    0x452ADDE8
hook        equ    0x45C00940+1
address1    equ    0x452ADF86+1
address2    equ    0x45719CFC
address3    equ    0x45004834+1
address4    equ    0x44FD5504+1
address5    equ    0x44F34E55
address6    equ    0x450FAD09
address7    equ    0x452ADC98+1

org 0x452ADD9C
        BEQ    branch


org 0x452ADDE8
        LDR    R3, off_452ADDEC
        BX    R3

off_452ADDEC    DCD hook


org 0x45C00940
loc_45C00940:
        PUSH    {R4}
        LDR    R3, off_45C00988
        BLX    R3
        CMP    R0, 0
        NOP
        LDR    R0, off_45C0098C
        LDR    R3, off_45C00994
        BLX    R3
        CMP    R0, 0
        BNE    loc_45C0096E
        LDR    R0, off_45C00990
        LDR    R3, off_45C00994
        BLX    R3
        CMP    R0, 0
        BNE    loc_45C0096E
        ADR    R1, aSlideropen_mp3
        CMP    R4, 0x3F
        BEQ    loc_45C00966
        ADR    R1, aSliderclose_mp

loc_45C00966:
        LDR    R0, off_45C00980
        MOVS    R2, 0x32
        LDR    R3, off_45C00984
        BLX    R3

loc_45C0096E:
        POP    {R4}
        MOVS    R0, 0x27
        CMP    R4, 0x40
        BNE    loc_45C00978
        MOVS    R0, 0x28

loc_45C00978:
        LDR    R3, off_45C0097C
        BX    R3

align 4

off_45C0097C    DCD address1
off_45C00980    DCD address2
off_45C00984    DCD address3
off_45C00988    DCD address4
off_45C0098C    DCD address5
off_45C00990    DCD address6
off_45C00994    DCD address7

aSlideropen_mp3    du "slideropen.mp3",0

align 4

aSliderclose_mp    du "sliderclose.mp3",0


Примечание: Вы можете назвать ваши значения EQU как душе угодно.



© Shadow Player
Локализация: HierOS
Оригинал




Хорошо смеется тот, кто админ и модератор.
Спасибо сказали: arban, Xamid, Zormax, MahmudS, VoiD, timos_06, Therion, vile, MNS81, Grinvich11, zapret007, Ugolovnik, MurametS, -BourNe-, HotRabbit, Blend, Дыма, LoDark, AmpeR, Nook, KIDLIF, pavelsh, a6b6

Vov4ик


Patcher


Регистрация: 14.8.10
Сообщений: 826
Репутация: 8576
Откуда: Russia




 
  #52 [28.03.11, 18:47] Re: [Tutorial] Создание ASM файла (исходника).   

 
ivason, это значит выравнивание





Neodzen


Patcher


Регистрация: 3.10.10
Сообщений: 311
Репутация: 3339
Откуда: Украина




 
  #53 [28.03.11, 19:09] Re: [Tutorial] Создание ASM файла (исходника).   

 
Vov4ик, его обязательно надо ставить?


Добавлено 28.3.11 18:10

и перед чем, какими блоками?




K800 R8BF003 FOREVER!
Респекты: MrGraL,Therion,D3mon,E1kolyan,Boysie,Vov4ик, ну и список можно продолжать еще долго)))
'Фу' сказали: pavelsh

E1kolyan


Developer


Регистрация: 8.7.07
Сообщений: 663
Репутация: 11934
Откуда: Челябинск




 
  #54 [28.03.11, 19:22] Re: [Tutorial] Создание ASM файла (исходника).   

 
ivason, где компилятор просит там и ставь





Sony Ericsson C905 SW-R1FA035
Sony Ericsson K810 SW-R8BF003
Sony Xperia™ S
ZTE Blade X3
Спасибо сказали: Vov4ик, GaS

MaxxxS


Patcher


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




 
  #55 [28.03.11, 20:50] Re: [Tutorial] Создание ASM файла (исходника).   

 
ivason, писал:
align 2

нафига выравнивать по четным. обычно выравнивание нужно по адресу кратному 4-м, т.е. align 4
Ставится перед двордами и перед функами, которые вызываются через
LDR R0, dw20 / adr R0, dw20
......
dw20 DCD sub10+1

align 4
sub10:

Ну и как сказал Колян - Где компилятор попросит.




SE Пешиход 810 [R4EA031fix] ЭП v1.9.2
Philips W632_1228_V13_root Android 2.3.5

pavelsh


Expert


Регистрация: 1.3.09
Сообщений: 195
Репутация: 542
Откуда: Ижевск




 
  #56 [06.04.11, 17:06] Re: [Tutorial] Создание ASM файла (исходника).   

 
Помогите пожалуйста. Что неверно в исхе, если компилятор пишет:
Код:
D:\...\bookman.asm [46]:
                         PUSH    {R4-R7,LR}
error: Instruction not available in ARM.



Прикрепленный к сообщению файл:

bookman.zip bookman.zip (5.53 kb; 1 hits) Скачать файл
Snimok.PNG_1.PNG


T700 R3EG004

Vov4ик


Patcher


Регистрация: 14.8.10
Сообщений: 826
Репутация: 8576
Откуда: Russia




 
  #57 [06.04.11, 17:15] Re: [Tutorial] Создание ASM файла (исходника).   

 
pavelsh пишет:
Помогите пожалуйста. Что неверно в исхе, если компилятор пишет:
Код:
D:\...\bookman.asm [46]:
                         PUSH    {R4-R7,LR}
error: Instruction not available in ARM.


ты забыл про include "x.inc" =) ну или хотя бы code 16 тебе поможет)




Спасибо сказали: pavelsh

pavelsh


Expert


Регистрация: 1.3.09
Сообщений: 195
Репутация: 542
Откуда: Ижевск




 
  #58 [06.04.11, 17:16] Re: [Tutorial] Создание ASM файла (исходника).   

 
Во блин... Спасибо :lol:




T700 R3EG004
Спасибо сказали: Vov4ик

Neodzen


Patcher


Регистрация: 3.10.10
Сообщений: 311
Репутация: 3339
Откуда: Украина




 
  #59 [18.04.11, 18:32] Re: [Tutorial] Создание ASM файла (исходника).   

 
еще один вопрос. Что такое branch и hook? Как их определить?




K800 R8BF003 FOREVER!
Респекты: MrGraL,Therion,D3mon,E1kolyan,Boysie,Vov4ик, ну и список можно продолжать еще долго)))

Vov4ик


Patcher


Регистрация: 14.8.10
Сообщений: 826
Репутация: 8576
Откуда: Russia




 
  #60 [18.04.11, 18:56] Re: [Tutorial] Создание ASM файла (исходника).   

 
ivason, я могу назвать их хоть вася и петя, зачем их определять?

Код:
Примечание: Вы можете назвать ваши значения EQU как душе угодно.




Спасибо сказали: ivason

Neodzen


Patcher


Регистрация: 3.10.10
Сообщений: 311
Репутация: 3339
Откуда: Украина




 
  #61 [19.04.11, 10:24] Re: [Tutorial] Создание ASM файла (исходника).   

 
Vov4ик, а для чего нужен скрипт lbn? Его надо использовать?




K800 R8BF003 FOREVER!
Респекты: MrGraL,Therion,D3mon,E1kolyan,Boysie,Vov4ик, ну и список можно продолжать еще долго)))
Страница 6 из 9: « 1 2 3 4 5 [6] 7 8 9 »


Похожие темы

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

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