Пятница, 27.06.2025, 06:13
[Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Популярные разделыВНИМАНИЕ!!!Новое важноеЛучшие пользователиРанг
Патчи DB2020                           //тем:(43)//ответов:(687!)
Эльфы                                       //тем:(141)//ответов:(343!)
Драйвера звука                      //тем:(7)//ответов:(117!)
Приложения                             //тем:(7)//ответов:(259!)
ФОРУМ БЫСТРОЙ ПОМОЩИ!   //тем:(36)//ответов:(300!)
Mega Pack's                             //тем:(173)//ответов:(178!)

rylev                  
MAA71              
Kanada7p7       
Olegarh24       
-LiNuX-             
u729                 







  • Страница 1 из 1
  • 1
Портирование патчей ставящихся за MAIN
Sanek Дата: Вторник, 06.05.2008, 22:44 | Сообщение # 1


Admin
Сообщений: 1878
Новичок
 За хорошию репутацию За 150 постов За 250 Постов За 500 Постов За 1000 Постов
Репутация:110 
Модель Телефона:K790i [] 
Статус: :-(
Статус ICQ:366980736 *
На форуме начали появляться большие патчи, типа пропущ. звонков, фонарика, вибры при дозвоне. На первый взгляд они огромны и портировать их кажется не реальным. Но все гораздо проще. Тот огромный кусок кода, который вставляется вместо FF...FFF это основная разумная часть патча, все что в ней может поменяться, это некоторые адреса, уходящие в прошивку. Они обычно лежат в конце области.

Пример - missed_calls_k750_r1ca021.vkp

Quote
451cb5a4: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0300BDE8002084E20fE0A0E130F09FE5
451cb5b4: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF B200C4E1FE80BDE83FE600003511EA44
451cb5c4: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CD7DF844CD9DE744783C0c4C70B51C45
451cb5d4: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 703C0c4C20B51C45743C0c4CE1D4EA44
451cb5e4: FFFFFFFFFFFFFFFF 8998E7440198E744

Читаем по 4 байта с конца и переворачиваем:
0198E744 = 01 98 E7 44 ---> 44 E7 98 01
8998E744 = 89 98 E7 44 ---> 44 e7 98 89
и т.д.

Далее я вижу 2 способа сделать патч:
Дизассемблировать патч, оформить его в исходник, найти адреса, который он использует и с помощью небольшого пакета сгенерировать по набору адресов и исходнику готовый патч.

Достоинства:
- легко портировать на много прошивок. Исходник создается один раз, а потом просто он линкуется с различными наборами адресов. Т.е для каждой новой прошивки нужно вычислить адреса и запустить пакет.
- у вас всегда есть исходник, можно разобраться что патч делает, что нового появилось в очередной версии патча, что там можно самому изменить.
- гарантирует результат

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

Достоинства:
- вам нужно найти адреса в патче, в прошивке и поменять их. Не нужно тратить время на исходник. В простых патчах типа "черного списка" это идеальный вариант

Недостатки:
- нужно очень много и очень внимательно рыться в hex.
- результат не особо гарантируется. Т.к. знать адреса может быть недостаточным. И могут возникнуть проблемы из-за команды LDR. Если вы не дизасемблируете код, то можете вообще не найти ошибку.
- если вам нужно портануть патч под другую прошивку, то нужно заново искать в патче адреса, потом в прошивке и т.д.
- легко ошибиться.
Некоторые люди пользуются 2-м вариантом, я считаю его неосмысленным, подверж. ошибкам и неприменимым на практике к большим патчам, поэтому я на нем останавливаться не буду.

Итак, вариант 1:
Давайте рассмотрим свежий пример - возьмем патч ";Напоминание миганием фонарика о пропущенном вызове." и прошивку k750 r1ca021. Список адресов я выложу также для k750 r1a008, w800 r1bc002.

Общая идея: создаем исходник *.asm, для каждой прошивке вычисляем нек адреса и пишем их в *.inc файл, а потом с помощью спец.пакета(см. в конце) получим *.vkp. Эту идею предложил, Den Po, мы с ним ею всегда пользуемся.
ШАГ1: ИСХОДНИК
Давайте портируем патч SiNgle с r1CA008 на r1ca021.
Вырезаем разумную часть патча, т.е область с FF...FF

Quote
011C1280: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FE402DE9EC009FE50FE0A0E1E8F09FE5
011C1290: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E8009FE50FE0A0E1E4F09FE5000050E3
011C12A0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FE80BD180100A0E3D8109FE50000C1E5
011C12B0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 090000EBFE80BDE8FF402DE90000A0E3
011C12C0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF C0109FE50000C1E5A8009FE50010A0E3
011C12D0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0FE0A0E1A0F09FE5FF80BDE8FF402DE9
011C12E0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF A0109FE50000D1E5000050E3FF80BD08
011C12F0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 080000EB010CA0E38C109FE58C409FE5
011C1300: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0E0000EB050AA0E384109FE584409FE5
011C1310: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0A0000EBFF80BDE8FF402DE90A00A0E3
011C1320: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0FE0A0E170F09FE5FF80BDE8FF402DE9
011C1330: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000A0E30FE0A0E15CF09FE5FF80BDE8
011C1340: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FE402DE903002DE9B200D4E1000050E3
011C1350: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0200000A020084E20FE0A0E13CF09FE5
011C1360: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0300BDE8002084E20FE0A0E130F09FE5
011C1370: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF B200C4E1FE80BDE83FE6000011B1E844
011C1380: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 25EAF644393FE6441C700B4C2C131C45
011C1390: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 14700B4CDC121C4518700B4C8D74E944
011C13A0: FFFFFFFFFFFFFFFF F539E6446D39E644

и выделяем сам патч, убирая FFF.. и адреса в первой колонке.

Quote
FE402DE9EC009FE50FE0A0E1E8F09FE5E8009FE50FE0A0E1E4F09FE5000050E3FE80BD180100A0E3
D8109FE50000C1E5090000EBFE80BDE8FF402DE90000A0E3C0109FE5 0000C1E5A8009FE50010A0E3
0FE0A0E1A0F09FE5FF80BDE8FF402DE9A0109FE50000D1E5000050E3FF80BD08080000EB010CA0E3
8C109FE58C409FE50E0000EB050AA0E3 84109FE584409FE50A0000EBFF80BDE8FF402DE90A00A0E3
0FE0A0E170F09FE5FF80BDE8FF402DE90000A0E30FE0A0E15CF09FE5FF80BDE8FE402DE903002DE9
B200D4E1 000050E30200000A020084E20FE0A0E13CF09FE50300BDE8002084E20FE0A0E130F09FE5
B200C4E1FE80BDE83FE6000011B1E84425EAF644393FE6441C700B4C2C131C4514 700B4CDC121C45
18700B4C8D74E944F539E6446D39E644

Естественно вы заметили, что мы взяли один кусок кода в 451C1280 - 451C13A8, поэтому его имели право его склеивать

Теперь в hex редакторе сделаем из этого файл. Я использую WinHhex.

Теперь его загружаем в иду. Мне удобнее кинуть его в новый проект, а не подцеплять к уже дизассемблированной прошивке.

При загрузке в новый проект выбираем
тип проца - как обычно ARM10a
ROM start adress, Loading adress = адресс с которого они начинаются в патче, т.е. в нашем случае 011C1280+44000000 = 451C1280

После того как проект загрузился лезем в
Options -> general -> analysis -> processor specific analysis options -> disable pionter referencing, ставим туда галку, и нажимаем кнопку:
Options -> general -> analysis -> reanalyze program

теперь ида не будет скрывать хрефы.
Далее преобразуем данные в код, нажимая кнопку "c"

Quote
ROM:451C1280; Segment type: Pure code
ROM:451C1280 AREA ROM, CODE, READWRITE, ALIGN=0
ROM:451C1280 ; ORG 0x451C1280
ROM:451C1280 CODE32
ROM:451C1280 STMFD SP!, {R1-R7,LR}
ROM:451C1284 LDR R0, dword_451C1378
ROM:451C1288 MOV LR, PC
ROM:451C128C LDR PC, dword_451C137C
ROM:451C1290 LDR R0, dword_451C1380
ROM:451C1294 MOV LR, PC
ROM:451C1298 LDR PC, dword_451C1384
ROM:451C129C CMP R0, #0
ROM:451C12A0 LDMNEFD SP!, {R1-R7,PC}
ROM:451C12A4 MOV R0, #1
ROM:451C12A8 LDR R1, dword_451C1388
ROM:451C12AC STRB R0, [R1]
ROM:451C12B0 BL sub_451C12DC
ROM:451C12B4 LDMFD SP!, {R1-R7,PC}
ROM:451C12B8; ---------------------------------------------------------------------------
ROM:451C12B8 STMFD SP!, {R0-R7,LR}
ROM:451C12BC MOV R0, #0
ROM:451C12C0 LDR R1, dword_451C1388
ROM:451C12C4 STRB R0, [R1]
ROM:451C12C8 LDR R0, dword_451C1378
ROM:451C12CC MOV R1, #0
ROM:451C12D0 MOV LR, PC
ROM:451C12D4 LDR PC, dword_451C137C
ROM:451C12D8 LDMFD SP!, {R0-R7,PC}
ROM:451C12DC
ROM:451C12DC; --------------- S U B R O U T I N E ---------------------------------------
ROM:451C12DC
ROM:451C12DC
ROM:451C12DC sub_451C12DC ; CODE XREF: ROM:451C12B0p
ROM:451C12DC ; DATA XREF: ROM:off_451C1394o
ROM:451C12DC STMFD SP!, {R0-R7,LR}
ROM:451C12E0 LDR R1, dword_451C1388
ROM:451C12E4 LDRB R0, [R1]
ROM:451C12E8 CMP R0, #0
ROM:451C12EC LDMEQFD SP!, {R0-R7,PC}
ROM:451C12F0 BL sub_451C1318
ROM:451C12F4 MOV R0, #0x100
ROM:451C12F8 LDR R1, off_451C138C
ROM:451C12FC LDR R4, dword_451C1390
ROM:451C1300 BL sub_451C1340
ROM:451C1304 MOV R0, #0x5000
ROM:451C1308 LDR R1, off_451C1394
ROM:451C130C LDR R4, dword_451C1398
ROM:451C1310 BL sub_451C1340
ROM:451C1314 LDMFD SP!, {R0-R7,PC}
ROM:451C1314; End of function sub_451C12DC
ROM:451C1314
ROM:451C1318
ROM:451C1318; --------------- S U B R O U T I N E ---------------------------------------
ROM:451C1318
ROM:451C1318
ROM:451C1318 sub_451C1318 ; CODE XREF: sub_451C12DC+14p
ROM:451C1318 STMFD SP!, {R0-R7,LR}
ROM:451C131C MOV R0, #0xA
ROM:451C1320 MOV LR, PC
ROM:451C1324 LDR PC, dword_451C139C
ROM:451C1328 LDMFD SP!, {R0-R7,PC}
ROM:451C1328; End of function sub_451C1318
ROM:451C1328
ROM:451C132C
ROM:451C132C; --------------- S U B R O U T I N E ---------------------------------------
ROM:451C132C
ROM:451C132C
ROM:451C132C sub_451C132C ; DATA XREF: ROM:off_451C138Co
ROM:451C132C STMFD SP!, {R0-R7,LR}
ROM:451C1330 MOV R0, #0
ROM:451C1334 MOV LR, PC
ROM:451C1338 LDR PC, dword_451C139C
ROM:451C133C LDMFD SP!, {R0-R7,PC}
ROM:451C133C; End of function sub_451C132C
ROM:451C133C
ROM:451C1340
ROM:451C1340; --------------- S U B R O U T I N E ---------------------------------------
ROM:451C1340
ROM:451C1340
ROM:451C1340 sub_451C1340 ; CODE XREF: sub_451C12DC+24p
ROM:451C1340 ; sub_451C12DC+34p
ROM:451C1340 STMFD SP!, {R1-R7,LR}
ROM:451C1344 STMFD SP!, {R0,R1}
ROM:451C1348 LDRH R0, [R4,#2]
ROM:451C134C CMP R0, #0
ROM:451C1350 BEQ loc_451C1360
ROM:451C1354 ADD R0, R4, #2
ROM:451C1358 MOV LR, PC
ROM:451C135C LDR PC, dword_451C13A0
ROM:451C1360
ROM:451C1360 loc_451C1360 ; CODE XREF: sub_451C1340+10j
ROM:451C1360 LDMFD SP!, {R0,R1}
ROM:451C1364 ADD R2, R4, #0
ROM:451C1368 MOV LR, PC
ROM:451C136C LDR PC, dword_451C13A4
ROM:451C1370 STRH R0, [R4,#2]
ROM:451C1374 LDMFD SP!, {R1-R7,PC}
ROM:451C1374; End of function sub_451C1340
ROM:451C1374
ROM:451C1374; ---------------------------------------------------------------------------
ROM:451C1378 dword_451C1378 DCD 0xE63F ; DATA XREF: ROM:451C1284r
ROM:451C1378 ; ROM:451C12C8r
ROM:451C137C dword_451C137C DCD 0x44E8B111; DATA XREF: ROM:451C128Cr
ROM:451C137C ; ROM:451C12D4r
ROM:451C1380 dword_451C1380 DCD 0x44F6EA25; DATA XREF: ROM:451C1290r
ROM:451C1384 dword_451C1384 DCD 0x44E63F39; DATA XREF: ROM:451C1298r
ROM:451C1388 dword_451C1388 DCD 0x4C0B701C; DATA XREF: ROM:451C12A8r
ROM:451C1388 ; ROM:451C12C0r ...
ROM:451C138C off_451C138C DCD sub_451C132C ; DATA XREF: sub_451C12DC+1Cr
ROM:451C1390 dword_451C1390 DCD 0x4C0B7014; DATA XREF: sub_451C12DC+20r
ROM:451C1394 off_451C1394 DCD sub_451C12DC ; DATA XREF: sub_451C12DC+2Cr
ROM:451C1398 dword_451C1398 DCD 0x4C0B7018; DATA XREF: sub_451C12DC+30r
ROM:451C139C dword_451C139C DCD 0x44E9748D; DATA XREF: sub_451C1318+Cr
ROM:451C139C ; sub_451C132C+Cr
ROM:451C13A0 dword_451C13A0 DCD 0x44E639F5; DATA XREF: sub_451C1340+1Cr
ROM:451C13A4 dword_451C13A4 DCD 0x44E6396D; DATA XREF: sub_451C1340+2Cr
ROM:451C13A4; ROM ends
ROM:451C13A4
ROM:451C13A4 END

Это почти все, что нужно.

Заметим, что в области ROM:451C1374 - ROM:451C13A4 вынесены все адреса, которые использует этот патч. (мы их видели в конце кода патча, в начале этого faq). Также есть и внутренние адреса в патче, который просчитывает компилятор, например

Quote
ROM:451C1394 off_451C1394 DCD sub_451C12DC ; DATA XREF: sub_451C12DC+2Cr

Далее его нужно преобразовать в вид, который мы сможем скомпилировать:
Правило 1
Убираем все упоминания адресов(типа ROM:451C13A4) в первой колонке.
Кому тежало убирать
Когда всё преобразили в код:
1.Options » General »Line prefixes(снимаем галочку)
2. Options » General »Comments(снять галку)
3. Options » General » Number of opcode bytes ставим 0
Правило 2
Все комментарии должны начинаться с значка ";"
Правило 3
Все константы с решеткой заменяем на:
#0x***..** - т.е. hex значение на десятичное и решетку стираем. Т.е. "MOV R0, #0xA" -> "MOV R0, 10"
#*** - т.е. десятичные, тогда убираем решетку "MOV R0, #11" -> "MOV R0, 11"
Правило 4
добавляем шапку : т.е.

Quote
include "missed_calls_w800_r1bc002.inc"
;include "missed_calls_k750_r1ca021.inc"
;include "missed_calls_k750_r1aa008.inc"
include "x.inc"

;------------------------------------------------------

org addr3_1
code32
somefn1:
;==========================================================

Где org - обозначает, что далее нужно расположить кусок кода по соотв. адресу
Правило 5
Все конкретные адреса заменяем на переменные addr1, addr2 и т.д. а из значения выносим в *.inc файл.
Правило 6
К меткам строк добавляем двоеточие. (например "loc_451C1360" -> "loc_451C1360: ")

Получится

Quote

include "missed_calls_w800_r1bc002.inc"
;include "missed_calls_k750_r1ca021.inc"
;include "missed_calls_k750_r1aa008.inc"
include "x.inc"

;------------------------------------------------------

org addr3_1
code32
somefn1:
;==========================================================
STMFD SP!, {R1-R7,LR}
LDR R0, d_451C1378
MOV LR, PC
LDR PC, d_451C137C
LDR R0, d_451C1380
MOV LR, PC
LDR PC, d_451C1384
CMP R0, 0
LDMNEFD SP!, {R1-R7,PC}
MOV R0, 1
LDR R1, d_451C1388
STRB R0, [R1]
BL sub_451C12DC
LDMFD SP!, {R1-R7,PC}
somefn2:
; ---------------------------------------------------------------------------
STMFD SP!, {R0-R7,LR}
MOV R0, 0
LDR R1, d_451C1388
STRB R0, [R1]
LDR R0, d_451C1378
MOV R1, 0
MOV LR, PC
LDR PC, d_451C137C
LDMFD SP!, {R0-R7,PC}
; --------------- S U B R O U T I N E ---------------------------------------

sub_451C12DC: ; CODE XREF: ROM:451C12B0p
; DATA XREF: ROM:off_451C1394o
STMFD SP!, {R0-R7,LR}
LDR R1, d_451C1388
LDRB R0, [R1]
CMP R0, 0
LDMEQFD SP!, {R0-R7,PC}
BL sub_451C1318
MOV R0, 256
LDR R1, off_451C138C
LDR R4, _addr4_14
BL sub_451C1340
MOV R0, 20480
LDR R1, off_451C1394
LDR R4, d_451C1398
BL sub_451C1340
LDMFD SP!, {R0-R7,PC}
; End of function sub_451C12DC

; --------------- S U B R O U T I N E ---------------------------------------

sub_451C1318: ; CODE XREF: sub_451C12DC+14p
STMFD SP!, {R0-R7,LR}
MOV R0, 10
MOV LR, PC
LDR PC, d_451C139C
LDMFD SP!, {R0-R7,PC}
; End of function sub_451C1318

; --------------- S U B R O U T I N E ---------------------------------------

sub_451C132C: ; DATA XREF: ROM:off_451C138Co
STMFD SP!, {R0-R7,LR}
MOV R0, 0
MOV LR, PC
LDR PC, d_451C139C
LDMFD SP!, {R0-R7,PC}
; End of function sub_451C132C

; --------------- S U B R O U T I N E ---------------------------------------

sub_451C1340: ; CODE XREF: sub_451C12DC+24p
; sub_451C12DC+34p
STMFD SP!, {R1-R7,LR}
STMFD SP!, {R0,R1}
LDRH R0, [R4,2]
CMP R0, 0
BEQ loc_451C1360
ADD R0, R4, 2
MOV LR, PC
LDR PC, d_451C13A0

loc_451C1360: ; CODE XREF: sub_451C1340+10j
LDMFD SP!, {R0,R1}
ADD R2, R4, 0
MOV LR, PC
LDR PC, d_451C13A4
STRH R0, [R4,2]
LDMFD SP!, {R1-R7,PC}
; End of function sub_451C1340

; ---------------------------------------------------------------------------
d_451C1378 DCD 0xE63F
d_451C137C DCD addr16 ;addr11 = 0x44E8B111
d_451C1380 DCD addr5
d_451C1384 DCD addr6
d_451C1388 DCD addr4+28

off_451C138C DCD sub_451C132C
_addr4_14 DCD addr4+20
off_451C1394 DCD sub_451C12DC
d_451C1398 DCD addr4+24
d_451C139C DCD addr7

d_451C13A0 DCD addr9
d_451C13A4 DCD addr10
; ROM ends

Теперь нужно разобраться с остальными строками патча.
Я их просто применяю в иде к прошивке и дописываю в исходник что получается.
Чтобы применит патч в иде, найдите в [IDA folder]\cfg\idagui.cfg стоку c словом "PatchByte" и переделайте ее так

"PatchByte" = "i"

где "i" - горячая клавиша.
Теперь в иде можно нажать "i" и вы получите диалог "Patch Bytes". (наверно потребуется перезагрузить иду)

В нашем случае получилось, что нужно еще дописать к исходнику

Quote
org addr11
code16
LDR r0, _somefn1
blx r0
nop
org addr12
code16
db 224 ; B loc_44DC4B82
db 24
db 73 ; LDR R1, =0x68F
_somefn1:
DCD somefn1; DCD 0x451C1280
; db 55
; db 250
;_somefn3: cmp r4, 0

org addr14
code16
blx r0
nop

org addr15
DCD somefn2

"db" - это положить байт, а " DCD " - положить слово.
Замечу, что вот здесь:

Quote
ROM:44DC4B7C 80 12+off_44DC4B7C DCD 0x451C1280 ; DATA XREF: ROM:44DC4B14 r

лежит адрес нашей разумной части патча, и он вызывается вот здесь

Quote
ROM:44DC4B14 19 48 LDR R0, =0x451C1280; Load from Memory
ROM:44DC4B16 80 47 BLX R0 ; Branch with Link and Exchange (register indirect)
ROM:44DC4B18 C0 46 NOP ; No Operation

ШАГ2: Адреса
Пока мы составляли патч, то автоматом для прошивки r1a008 получили
addr4, addr5, addr6, addr7, addr9, addr10, addr3_1, addr11, addr12, addr13, addr14, addr15, addr16
Осталось найти аналогичные для прошивки r1ca021. Основная идея - около такого адреса увидеть кусок кода, который скорее всего не изменится в другое прошивке. Естественно в нем не должно быть указано ссылок на адреса или ссылок на константы. Идеально, если там идет какие-нибудь операции с регистрами и маленькими численными константами

Quote
ROM:44DE29A2 24 34 ADD R4, #0x24
ROM:44DE29A4 21 78 LDRB R1, [R4]
ROM:44DE29A6 28 1C ADD R0, R5, #0
т.е.
24 34 21 78 28 1C

Теперь во "Binary search": Alt+B ищем вхождения такой строки. Если вхождений мало, т.е. 1-5, то повезло и среди них ищем именно наш аналог. Ищем по контексту, т.е. по коду, в окрестности нашего адреса. Используем общие соображения о том, что нужный код должен быть примерно такой же, как исходный.

Адреса обычно сложнее всего найти и это единственная осмысленная вешь при портировании.

ШАГ3: Генерация
make.bat использует программку на Java, если возникнут проблемы, то генерируйте патч с помощью old_make.bat.

make.bat missed.asm W800_R1BC002_MAIN_EU_CID36_BINARY.raw missed3 44020000 -i v.info> log
make.bat missed.asm K750_R1CA021_MAIN_EU_1_CL_RED36.raw missed2 44020000 -i v.info> log
make.bat missed.asm K750_MAIN_EU_R1AA008_CID36.raw missed1 44020000 -i v.info> log

-естественно прошивка, исходник, *.inc файл должны быть в одном каталоге.
-v.info - необязательный параметр, это файл с шапкой к патчу.
-лучше перенаправляете вывод в лог, чтобы была возможность читать ошибки. Когда вы создаете исходник, то наверно где-нибудь ошибетесь, поэтому сначала добейтесь, чтобы по вашему исходнику и *.inc для него генерировался такой же патч, как вам нужно портировать.
-не забывайте в шапке *.asm файла указывать нужный импорт *.inc файла, а лишнее закомментируйте.
-думайте головой

© romeo


Важно!
Набор команды на сайт
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright seclub.my1.ru © 2025 Хостинг от uCoz