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

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

HierOS


Patcher/Moder


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




 
  #11 [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

timos_06


Patchmaster


Регистрация: 30.11.07
Сообщений: 342
Репутация: 839
Откуда: ННовгород(рулит)




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

 
MurametS,
Ты походу выделяешь одну строку. Надо больше одной




|C510 SW-R1HA035|+моддинг FS+патчи+эльфпак 8-)
Спасибо сказали: MurametS, HotRabbit, pavelsh

MurametS


Patcher


Регистрация: 18.1.08
Сообщений: 180
Репутация: 385
Откуда: Малмыж




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

 
timos_06, щас в исходнике получается это, А никаких адресов нет
; +-------------------------------------------------------------------------+
; | 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 |
; +-------------------------------------------------------------------------+
;


; ---------------------------------------------------------------------------
STRMI R4, [R0,-R0,LSL#16]
STRMIB R5, [R5,#0x177]




LG Optimus Black
SE W580 R6CA001 Orange
SE K800 R8BF003
PSP 3008 6.20 TN

Joker XT


VIP Developer


Регистрация: 5.8.06
Сообщений: 1292
Репутация: 7599





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

 
адресов и не будет)
и ты хоть бы в правильнои режме копировал...




SE C901 [R1GA028]
Спасибо сказали: MurametS

timos_06


Patchmaster


Регистрация: 30.11.07
Сообщений: 342
Репутация: 839
Откуда: ННовгород(рулит)




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

 
MurametS,
мда... Ты так забросаешь вопросами... Перечитывай по несколько раз и мой тебе совет, пользуй плагу для иды от Дена. С ней открытие прошивки упрощается :-)




|C510 SW-R1HA035|+моддинг FS+патчи+эльфпак 8-)

MurametS


Patcher


Регистрация: 18.1.08
Сообщений: 180
Репутация: 385
Откуда: Малмыж




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

 
timos_06, ладно, спасибо за помощь ;-)




LG Optimus Black
SE W580 R6CA001 Orange
SE K800 R8BF003
PSP 3008 6.20 TN

Va_st


Patchmaster


Регистрация: 3.8.08
Сообщений: 440
Репутация: 1142





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

 
MurametS, ты превратил тему в сделайте мне исх!Предлагаю закрыть тему и удалить лишнее,чтоб тема была как примером,а не местом флуда




j10i2 r7ca061
Спасибо сказали: HotRabbit

-DeJaVu-


Patcher


Регистрация: 2.1.09
Сообщений: 727
Репутация: 3218





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

 
Применяем патч используя IDC скрипт 'Apply VKP Patch'.


что-то я не понял где находится этот скрипт. Можно по-подробнее?





Xamid


Patchmaster


Регистрация: 26.8.07
Сообщений: 449
Репутация: 1965
Откуда: Ростов-на-Дону




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

 
-BourNe-, держи, я тоже его хз сколько искал. Нигде не было. Потом кто-то передал из патчеров :-)



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

ApplyPatch.rar ApplyPatch.rar (3.17 kb; 57 hits) Скачать файл


SGS3 white
Спасибо сказали: -BourNe-

-DeJaVu-


Patcher


Регистрация: 2.1.09
Сообщений: 727
Репутация: 3218





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

 
Xamid пишет:
-BourNe-, держи, я тоже его хз сколько искал. Нигде не было. Потом кто-то передал из патчеров :-)


спасибо за скрипт. А что с ним делать? Как его применить к ida?





A1z


Patchmaster


Регистрация: 18.11.07
Сообщений: 236
Репутация: 816
Откуда: Минск




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

 
Xamid, я бы ещё добавил скрипт UndoPatch. Если нужно отменить патч а иду перегружать неохота.



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

UndoPatch.zip UndoPatch.zip (3.51 kb; 48 hits) Скачать файл


W715 SW-R1GA030
Sony Xperia Z1
Спасибо сказали: HotRabbit
Страница 2 из 9: « 1 [2] 3 4 5 6 ... 9 »


Похожие темы

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

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